From: Bram Moolenaar Date: Wed, 8 Aug 2012 11:17:31 +0000 (+0200) Subject: updated for version 7.3.623 X-Git-Tag: v7.3.623 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c271c48e8043ec388487b7489fb4692a154791d8;p=vim updated for version 7.3.623 Problem: Perl 5.14 commands crash Vim on MS-Windows. Solution: Use perl_get_sv() instead of GvSV(). (Raymond Ko) --- diff --git a/src/if_perl.xs b/src/if_perl.xs index 57dbe4699..4dc80beaa 100644 --- a/src/if_perl.xs +++ b/src/if_perl.xs @@ -76,6 +76,12 @@ # 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; diff --git a/src/version.c b/src/version.c index 8dd24bdc8..67ab5e726 100644 --- a/src/version.c +++ b/src/version.c @@ -714,6 +714,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 623, /**/ 622, /**/