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