X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=Magic.xs;h=ba230455e8bfff3bf05a590a8ea017acf39bdf23;hb=547789f35817c76557817263360e4fa8b24b67b8;hp=be96e8c4f9177e6a277d84fdfff767219c356a03;hpb=75af4794a9ba6d7a13fdaab05a5938390affa940;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/Magic.xs b/Magic.xs index be96e8c..ba23045 100644 --- a/Magic.xs +++ b/Magic.xs @@ -18,10 +18,6 @@ #define PERL_VERSION_LE(R, V, S) (PERL_REVISION < (R) || (PERL_REVISION == (R) && (PERL_VERSION < (V) || (PERL_VERSION == (V) && (PERL_SUBVERSION <= (S)))))) -#define PERL_API_VERSION_GE(R, V, S) (PERL_API_REVISION > (R) || (PERL_API_REVISION == (R) && (PERL_API_VERSION > (V) || (PERL_API_VERSION == (V) && (PERL_API_SUBVERSION >= (S)))))) - -#define PERL_API_VERSION_LE(R, V, S) (PERL_API_REVISION < (R) || (PERL_API_REVISION == (R) && (PERL_API_VERSION < (V) || (PERL_API_VERSION == (V) && (PERL_API_SUBVERSION <= (S)))))) - #ifndef VMG_PERL_PATCHLEVEL # ifdef PERL_PATCHNUM # define VMG_PERL_PATCHLEVEL PERL_PATCHNUM @@ -72,7 +68,7 @@ #endif /* uvar magic and Hash::Util::FieldHash were commited with p28419 */ -#if (VMG_PERL_PATCHLEVEL >= 28419) || (!VMG_PERL_PATCHLEVEL && PERL_VERSION_GE(5, 9, 4)) +#if VMG_HAS_PERL_AND(28419, 5, 9, 4) # define VMG_UVAR 1 #else # define VMG_UVAR 0 @@ -602,13 +598,11 @@ STATIC int vmg_wizard_free(pTHX_ SV *wiz, MAGIC *mg) { w = SV2MGWIZ(wiz); - SvREFCNT_inc(wiz); /* Fake survival - it's gonna be deleted anyway */ -#if PERL_API_VERSION_GE(5, 9, 5) - SvREFCNT_inc(wiz); /* One more push */ -#endif if (hv_delete(MY_CXT.wizz, buf, sprintf(buf, "%u", w->sig), 0)) { --MY_CXT.count; } + SvFLAGS(wiz) |= SVf_BREAK; + FREETMPS; if (w->cb_data != NULL) { SvREFCNT_dec(SvRV(w->cb_data)); } if (w->cb_get != NULL) { SvREFCNT_dec(SvRV(w->cb_get)); } @@ -721,6 +715,7 @@ BOOT: newSVuv(VMG_COMPAT_ARRAY_UNDEF_CLEAR)); newCONSTSUB(stash, "VMG_COMPAT_SCALAR_LENGTH_NOLEN", newSVuv(VMG_COMPAT_SCALAR_LENGTH_NOLEN)); + newCONSTSUB(stash, "VMG_PERL_PATCHLEVEL", newSVuv(VMG_PERL_PATCHLEVEL)); } SV *_wizard(...)