use a fresh stack when loading Errno.pm etc.
Dave Mitchell [Wed, 14 Mar 2007 12:34:05 +0000 (12:34 +0000)]
Stops 'use vars qw($!)' in lib/vars.t segfaulting.
(This can be reduced to 'my $sym = "!"; *$sym = \$$sym')

p4raw-id: //depot/perl@30577

gv.c

diff --git a/gv.c b/gv.c
index 6c664db..26308bb 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -697,11 +697,12 @@ S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methp
                                  so save it. For the moment it's always
                                  a single char. */
        dSP;
-       PUTBACK;
        ENTER;
        if ( flags & 1 )
            save_scalar(gv);
+       PUSHSTACKi(PERLSI_MAGIC);
        Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL);
+       POPSTACK;
        LEAVE;
        SPAGAIN;
        stash = gv_stashsv(namesv, 0);