]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.623 v7.3.623
authorBram Moolenaar <Bram@vim.org>
Wed, 8 Aug 2012 11:17:31 +0000 (13:17 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 8 Aug 2012 11:17:31 +0000 (13:17 +0200)
Problem:    Perl 5.14 commands crash Vim on MS-Windows.
Solution:   Use perl_get_sv() instead of GvSV(). (Raymond Ko)

src/if_perl.xs
src/version.c

index 57dbe46995239165faa14d8562877b5bfd164e05..4dc80beaa5b76bee802179e5098084d998f7533a 100644 (file)
 # define EXTERN_C
 #endif
 
+#if (PERL_REVISION == 5) && (PERL_VERSION >= 14) && defined(_MSC_VER)
+/* Using PL_errgv to get the error message after perl_eval_sv() causes a crash
+ * with MSVC and Perl version 5.14. */
+# define AVOID_PL_ERRGV
+#endif
+
 /* Compatibility hacks over */
 
 static PerlInterpreter *perl_interp = NULL;
@@ -796,7 +802,11 @@ ex_perl(eap)
 
     SvREFCNT_dec(sv);
 
+#ifdef AVOID_PL_ERRGV
+    err = SvPV(perl_get_sv("@", GV_ADD), length);
+#else
     err = SvPV(GvSV(PL_errgv), length);
+#endif
 
     FREETMPS;
     LEAVE;
@@ -866,7 +876,11 @@ ex_perldo(eap)
     sv_catpvn(sv, "}", 1);
     perl_eval_sv(sv, G_DISCARD | G_NOARGS);
     SvREFCNT_dec(sv);
+#ifdef AVOID_PL_ERRGV
+    str = SvPV(perl_get_sv("@", GV_ADD), length);
+#else
     str = SvPV(GvSV(PL_errgv), length);
+#endif
     if (length)
        goto err;
 
@@ -880,7 +894,11 @@ ex_perldo(eap)
        sv_setpv(GvSV(PL_defgv), (char *)ml_get(i));
        PUSHMARK(sp);
        perl_call_pv("VIM::perldo", G_SCALAR | G_EVAL);
+#ifdef AVOID_PL_ERRGV
+       str = SvPV(perl_get_sv("@", GV_ADD), length);
+#else
        str = SvPV(GvSV(PL_errgv), length);
+#endif
        if (length)
            break;
        SPAGAIN;
index 8dd24bdc8e64c9c763c3da3530a2e62d65092214..67ab5e726667fd135ce2880b96f465eceb4536cb 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    623,
 /**/
     622,
 /**/