--- ./lib/core/src/perl/CPlusPlus.xxs.orig 2014-10-13 06:14:22.000000000 -0600 +++ ./lib/core/src/perl/CPlusPlus.xxs 2015-06-23 21:57:23.088657455 -0600 @@ -348,7 +348,7 @@ MAGIC* allocate_magic(pTHX_ SV* sv, char Newxz(mg->mg_ptr, vtab->obj_size, char); } mg->mg_virtual = (MGVTBL*)&vtab->std; - Perl_mg_magical(aTHX_ sv); + Perl_mg_magical(sv); return mg; } --- ./lib/core/src/perl/namespaces.xs.orig 2014-10-13 06:14:22.000000000 -0600 +++ ./lib/core/src/perl/namespaces.xs 2015-06-23 21:16:44.995221409 -0600 @@ -207,7 +207,13 @@ int reset_ptrs_via_magic(pTHX_ SV* sv, M return 0; } -#if PerlVersion >= 5200 +#if PerlVersion >= 5220 +# define SetPadnamesOfCurrentSub(savevar) \ + PADNAMELIST* savevar=PL_comppad_name; \ + PL_comppad_name=PadlistNAMES(CvPADLIST(pm_perl_get_cur_cv(aTHX))) +# define RestorePadnames(savevar) \ + PL_comppad_name=savevar +#elif PerlVersion >= 5200 /* op_clear reaches into PL_comppad_name which points to something different during the execution phase */ # define SetPadnamesOfCurrentSub(savevar) \ AV* savevar=PL_comppad_name; \ @@ -747,7 +753,7 @@ void store_package_gv(pTHX_ GV *var_gv, } static inline -GV* test_imported_gv(GV *gv, I32 type, int ignore_methods) +GV* test_imported_gv(pTHX_ GV *gv, I32 type, int ignore_methods) { switch (type) { case SVt_PV: @@ -776,7 +782,7 @@ GV* try_stored_package_gv(pTHX_ GV *gv, { MAGIC *mg=mg_find((SV*)gv,PERL_MAGIC_ext); if (mg && (gv=(GV*)mg->mg_obj)) { - gv=test_imported_gv(gv, type, ignore_methods); + gv=test_imported_gv(aTHX_ gv, type, ignore_methods); return gv==(GV*)-1UL ? Nullgv : gv; } return Nullgv; @@ -789,7 +795,7 @@ GV* lookup_name_in_stash(pTHX_ HV *stash if (gvp) { GV *gv=*gvp; if (SvTYPE(gv)==SVt_PVGV) { - GV *imp_gv=test_imported_gv(gv, type, ignore_methods); + GV *imp_gv=test_imported_gv(aTHX_ gv, type, ignore_methods); if (imp_gv) return imp_gv==(GV*)-1UL ? Nullgv : imp_gv; return try_stored_package_gv(aTHX_ gv, type, ignore_methods); } @@ -1110,7 +1116,7 @@ void lookup(pTHX_ GV* var_gv, I32 type, if (other_stash==stash) { MAGIC *mg=mg_find((SV*)var_gv,PERL_MAGIC_ext); if (mg && (imp_gv=(GV*)mg->mg_obj) && - (imp_gv=test_imported_gv(imp_gv, type, FALSE))) { + (imp_gv=test_imported_gv(aTHX_ imp_gv, type, FALSE))) { repair_pp_gv(aTHX_ var_gv, imp_gv); return; }