summaryrefslogtreecommitdiff
path: root/class.c
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2023-02-09 14:45:20 +0000
committerPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2023-02-10 12:07:02 +0000
commitca8d92cfddc9cc3d4904712f7e0dfc3b2598561d (patch)
tree7cd889ad35d1adc69805fd67c19d0c066af7f54d /class.c
parent24c33697796a1556af3f58e15fc4fb6b0d1538dc (diff)
downloadperl-ca8d92cfddc9cc3d4904712f7e0dfc3b2598561d.tar.gz
Disallow bless hackery around classes and instances
Diffstat (limited to 'class.c')
-rw-r--r--class.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/class.c b/class.c
index 6642a01d5d..213ebc1407 100644
--- a/class.c
+++ b/class.c
@@ -80,8 +80,10 @@ XS(injected_constructor)
}
SV *instance = newSVobject(aux->xhv_class_next_fieldix);
+ SvOBJECT_on(instance);
+ SvSTASH_set(instance, MUTABLE_HV(SvREFCNT_inc_simple(stash)));
+
SV *self = sv_2mortal(newRV_noinc(instance));
- sv_bless(self, stash);
SV **fields = ObjectFIELDS(instance);