This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlapi: Remove per-thread section; move to real scns
[perl5.git] / pp_ctl.c
index b8cd869..ed451c0 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1228,7 +1228,7 @@ PP(pp_flop)
            if ((SvOK(left) && !SvIOK(left) && SvNV_nomg(left) < IV_MIN) ||
                (SvOK(right) && (SvIOK(right)
                                 ? SvIsUV(right) && SvUV(right) > IV_MAX
-                                : SvNV_nomg(right) > IV_MAX)))
+                                : SvNV_nomg(right) > (NV) IV_MAX)))
                DIE(aTHX_ "Range iterator outside integer range");
            i = SvIV_nomg(left);
            j = SvIV_nomg(right);
@@ -1716,7 +1716,11 @@ Perl_die_unwind(pTHX_ SV *msv)
          * when unlocalising a tied var). So we do a dance with
          * mortalising and SAVEFREEing.
          */
-        sv_2mortal(SvREFCNT_inc_simple_NN(exceptsv));
+        if (PL_phase == PERL_PHASE_DESTRUCT) {
+            exceptsv = sv_mortalcopy(exceptsv);
+        } else {
+            exceptsv = sv_2mortal(SvREFCNT_inc_simple_NN(exceptsv));
+        }
 
        /*
         * Historically, perl used to set ERRSV ($@) early in the die
@@ -1842,7 +1846,7 @@ PP(pp_xor)
 
 /*
 
-=head1 CV Manipulation Functions
+=for apidoc_section $CV
 
 =for apidoc caller_cx
 
@@ -3481,7 +3485,7 @@ S_doeval_compile(pTHX_ U8 gimme, CV* outside, U32 seq, HV *hh)
 
     SAVEHINTS();
     if (clear_hints) {
-       PL_hints = 0;
+       PL_hints = HINTS_DEFAULT;
        hv_clear(GvHV(PL_hintgv));
         CLEARFEATUREBITS();
     }