]> git.vpit.fr Git - perl/modules/Scope-Upper.git/blobdiff - Upper.xs
Preemptively remove uses of lvalue GvCV
[perl/modules/Scope-Upper.git] / Upper.xs
index 47dab2b2100ea76d5b2ec5f68e268ee3aaf7df2b..682aa879f12664483e6d157a5aaeb5d81d32e3b1 100644 (file)
--- a/Upper.xs
+++ b/Upper.xs
 # define SvREFCNT_inc_simple_void(sv) SvREFCNT_inc(sv)
 #endif
 
+#ifndef GvCV_set
+# define GvCV_set(G, C) (GvCV(G) = (C))
+#endif
+
 #ifndef HvNAME_get
 # define HvNAME_get(H) HvNAME(H)
 #endif
@@ -167,8 +171,10 @@ START_MY_CXT
 # define SU_SAVE_GP_SIZE 6
 #elif !SU_HAS_PERL(5, 13, 0) || (SU_RELEASE && SU_HAS_PERL_EXACT(5, 13, 0))
 # define SU_SAVE_GP_SIZE 3
-#else
+#elif !SU_HAS_PERL(5, 13, 8)
 # define SU_SAVE_GP_SIZE 4
+#else
+# define SU_SAVE_GP_SIZE 3
 #endif
 
 #ifndef SvCANEXISTDELETE
@@ -544,7 +550,7 @@ STATIC void su_localize(pTHX_ void *ud_) {
    break;
   case SVt_PVCV:
    SAVESPTR(GvCV(gv));
-   GvCV(gv) = NULL;
+   GvCV_set(gv, NULL);
    break;
   default:
    gv = (GV *) save_scalar(gv);