Skip to content

Commit f37fbed

Browse files
committed
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)
1 parent 953a3ee commit f37fbed

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/if_perl.xs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@
7676
# define EXTERN_C
7777
#endif
7878

79+
#if (PERL_REVISION == 5) && (PERL_VERSION >= 14) && defined(_MSC_VER)
80+
/* Using PL_errgv to get the error message after perl_eval_sv() causes a crash
81+
* with MSVC and Perl version 5.14. */
82+
# define AVOID_PL_ERRGV
83+
#endif
84+
7985
/* Compatibility hacks over */
8086

8187
static PerlInterpreter *perl_interp = NULL;
@@ -796,7 +802,11 @@ ex_perl(eap)
796802

797803
SvREFCNT_dec(sv);
798804

805+
#ifdef AVOID_PL_ERRGV
806+
err = SvPV(perl_get_sv("@", GV_ADD), length);
807+
#else
799808
err = SvPV(GvSV(PL_errgv), length);
809+
#endif
800810

801811
FREETMPS;
802812
LEAVE;
@@ -866,7 +876,11 @@ ex_perldo(eap)
866876
sv_catpvn(sv, "}", 1);
867877
perl_eval_sv(sv, G_DISCARD | G_NOARGS);
868878
SvREFCNT_dec(sv);
879+
#ifdef AVOID_PL_ERRGV
880+
str = SvPV(perl_get_sv("@", GV_ADD), length);
881+
#else
869882
str = SvPV(GvSV(PL_errgv), length);
883+
#endif
870884
if (length)
871885
goto err;
872886

@@ -880,7 +894,11 @@ ex_perldo(eap)
880894
sv_setpv(GvSV(PL_defgv), (char *)ml_get(i));
881895
PUSHMARK(sp);
882896
perl_call_pv("VIM::perldo", G_SCALAR | G_EVAL);
897+
#ifdef AVOID_PL_ERRGV
898+
str = SvPV(perl_get_sv("@", GV_ADD), length);
899+
#else
883900
str = SvPV(GvSV(PL_errgv), length);
901+
#endif
884902
if (length)
885903
break;
886904
SPAGAIN;

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,8 @@ static char *(features[]) =
714714

715715
static int included_patches[] =
716716
{ /* Add new patch number below this line */
717+
/**/
718+
623,
717719
/**/
718720
622,
719721
/**/

0 commit comments

Comments
 (0)