instead of unions use double cast for data pointer <-> function pointer
[p5sagit/p5-mst-13.2.git] / scope.c
diff --git a/scope.c b/scope.c
index 085ed16..11c81bd 100644 (file)
--- a/scope.c
+++ b/scope.c
@@ -267,7 +267,7 @@ Perl_save_gp(pTHX_ GV *gv, I32 empty)
     SSPUSHIV((IV)SvLEN(gv));
     SvLEN_set(gv, 0); /* forget that anything was allocated here */
     SSPUSHIV((IV)SvCUR(gv));
-    SSPUSHPTR(SvPVX(gv));
+    SSPUSHPTR(SvPVX_const(gv));
     SvPOK_off(gv);
     SSPUSHPTR(SvREFCNT_inc(gv));
     SSPUSHPTR(GvGP(gv));
@@ -469,11 +469,7 @@ Perl_save_threadsv(pTHX_ PADOFFSET i)
 {
     Perl_croak(aTHX_ "panic: save_threadsv called in non-threaded perl");
     (void)i;
-#ifndef HASATTRIBUTE_NORETURN
-    /* No __attribute__((noreturn)), so the compiler doesn't know that
-     * croak never returns. */
-    return 0;
-#endif
+    NORETURN_FUNCTION_END;
 }
 
 void
@@ -724,7 +720,7 @@ Perl_leave_scope(pTHX_ I32 base)
            if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv) &&
                SvTYPE(sv) != SVt_PVGV)
            {
-               (void)SvUPGRADE(value, SvTYPE(sv));
+               SvUPGRADE(value, SvTYPE(sv));
                SvMAGIC_set(value, SvMAGIC(sv));
                SvFLAGS(value) |= SvMAGICAL(sv);
                SvMAGICAL_off(sv);
@@ -842,8 +838,8 @@ Perl_leave_scope(pTHX_ I32 base)
        case SAVEt_GP:                          /* scalar reference */
            ptr = SSPOPPTR;
            gv = (GV*)SSPOPPTR;
-           if (SvPVX(gv) && SvLEN(gv) > 0) {
-               Safefree(SvPVX(gv));
+           if (SvPVX_const(gv) && SvLEN(gv) > 0) {
+               Safefree(SvPVX_const(gv));
            }
            SvPV_set(gv, (char *)SSPOPPTR);
            SvCUR_set(gv, (STRLEN)SSPOPIV);
@@ -869,7 +865,7 @@ Perl_leave_scope(pTHX_ I32 base)
            break;
        case SAVEt_FREEPV:
            ptr = SSPOPPTR;
-           Safefree((char*)ptr);
+           Safefree(ptr);
            break;
        case SAVEt_CLEARSV:
            ptr = (void*)&PL_curpad[SSPOPLONG];
@@ -1095,7 +1091,7 @@ Perl_cx_dump(pTHX_ PERL_CONTEXT *cx)
                PL_op_desc[cx->blk_eval.old_op_type]);
        if (cx->blk_eval.old_namesv)
            PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_NAME = %s\n",
-                         SvPVX(cx->blk_eval.old_namesv));
+                         SvPVX_const(cx->blk_eval.old_namesv));
        PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_EVAL_ROOT = 0x%"UVxf"\n",
                PTR2UV(cx->blk_eval.old_eval_root));
        PerlIO_printf(Perl_debug_log, "BLK_EVAL.RETOP = 0x%"UVxf"\n",