Reduce scope of SP in Perl_eval_pv
authorDaniel Dragan <bulk88@hotmail.com>
Fri, 23 Nov 2012 07:02:18 +0000 (08:02 +0100)
committerSteffen Mueller <smueller@cpan.org>
Fri, 23 Nov 2012 07:02:18 +0000 (08:02 +0100)
This commit has no effect on machine code, since dSP has no calls and
is removed as dead code by the compiler since SP is never read until after
the SPAGAIN. By reducing the scope of SP, accidentally lengthing SP's
liveness won't happen and also the code makes a little bit more sense than
the SPAGAIN which for a sec makes you think SVs were put on the Perl
stack before the eval_sv call. Clarity is the purpose.

perl.c

diff --git a/perl.c b/perl.c
index 63de43e..6d98d34 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -2892,7 +2892,6 @@ SV*
 Perl_eval_pv(pTHX_ const char *p, I32 croak_on_error)
 {
     dVAR;
-    dSP;
     SV* sv = newSVpv(p, 0);
 
     PERL_ARGS_ASSERT_EVAL_PV;
@@ -2900,9 +2899,11 @@ Perl_eval_pv(pTHX_ const char *p, I32 croak_on_error)
     eval_sv(sv, G_SCALAR);
     SvREFCNT_dec(sv);
 
-    SPAGAIN;
-    sv = POPs;
-    PUTBACK;
+    {
+        dSP;
+        sv = POPs;
+        PUTBACK;
+    }
 
     if (croak_on_error && SvTRUE(ERRSV)) {
        Perl_croak(aTHX_ "%s", SvPVx_nolen_const(ERRSV));