]> git.vpit.fr Git - perl/modules/Variable-Magic.git/blobdiff - Magic.xs
Set VMG_COMPAT_ARRAY_PUSH_NOLEN for Windows ActiveState Perl 5.8.x
[perl/modules/Variable-Magic.git] / Magic.xs
index c1e582ff13061d2fef15377983f7f58c77381a3b..82631169a3f7055157fd48cde7b844cd663d6dd7 100644 (file)
--- a/Magic.xs
+++ b/Magic.xs
 # define SvMAGIC_set(sv, val) (SvMAGIC(sv) = (val))
 #endif
 
+#ifndef mPUSHi
+# define mPUSHi(I) PUSHs(sv_2mortal(newSViv(I)))
+#endif
+
 #ifndef dMY_CXT
 # define MY_CXT vmg_globaldata
 # define dMY_CXT
 # define MGf_LOCAL 0
 #endif
 
-#if PERL_API_VERSION_GE(5, 10, 0)
+/* uvar magic and Hash::Util::FieldHash were commited with p28419 */
+#if (VMG_PERL_PATCHLEVEL >= 28419) || (!VMG_PERL_PATCHLEVEL && PERL_VERSION_GE(5, 9, 4))
 # define VMG_UVAR 1
 #else
 # define VMG_UVAR 0
 #endif
 
-#if (VMG_PERL_PATCHLEVEL >= 25854) || (!VMG_PERL_PATCHLEVEL && PERL_VERSION_GE(5, 9, 3))
+#if !defined(VMG_COMPAT_ARRAY_PUSH_NOLEN) && ((VMG_PERL_PATCHLEVEL >= 25854) || (!VMG_PERL_PATCHLEVEL && PERL_VERSION_GE(5, 9, 3)))
 # define VMG_COMPAT_ARRAY_PUSH_NOLEN 1
 #else
 # define VMG_COMPAT_ARRAY_PUSH_NOLEN 0
@@ -90,7 +95,7 @@
 
 #if VMG_UVAR
 
-/* Bug-free mg_magical - see http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-01/msg00036.html, but specialized to our needs. */
+/* Bug-free mg_magical - see http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-01/msg00036.html - but specialized to our needs. */
 STATIC void vmg_sv_magicuvar(pTHX_ SV *sv, const char *uf, I32 len) {
 #define vmg_sv_magicuvar(S, U, L) vmg_sv_magicuvar(aTHX_ (S), (U), (L))
  const MAGIC* mg;
@@ -102,22 +107,12 @@ STATIC void vmg_sv_magicuvar(pTHX_ SV *sv, const char *uf, I32 len) {
   do {
    const MGVTBL* const vtbl = mg->mg_virtual;
    if (vtbl) {
-/* 
-    if (vtbl->svt_get && !(mg->mg_flags & MGf_GSKIP))
-     SvGMAGICAL_on(sv);
-    if (vtbl->svt_set)
-     SvSMAGICAL_on(sv);
-*/
     if (vtbl->svt_clear) {
      SvRMAGICAL_on(sv);
      break;
     }
    }
   } while ((mg = mg->mg_moremagic));
-/*
-  if (!(SvFLAGS(sv) & (SVs_GMG|SVs_SMG)))
-   SvRMAGICAL_on(sv);
-*/
  }
 }