This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Silence MinGW warnings about system headers when building Errno
[perl5.git] / cop.h
diff --git a/cop.h b/cop.h
index 172c265..c874872 100644 (file)
--- a/cop.h
+++ b/cop.h
@@ -177,21 +177,14 @@ struct cop {
 
 #  define CopSTASH(c)          (CopSTASHPV(c) \
                                 ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv)
-#  define CopSTASH_set(c,hv)   CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch)
-#  define CopSTASH_eq(c,hv)    ((hv)                                   \
-                                && (CopSTASHPV(c) == HvNAME(hv)        \
-                                    || (CopSTASHPV(c) && HvNAME(hv)    \
-                                        && strEQ(CopSTASHPV(c), HvNAME(hv)))))
+#  define CopSTASH_set(c,hv)   CopSTASHPV_set(c, (hv) ? HvNAME_get(hv) : Nullch)
+#  define CopSTASH_eq(c,hv)    ((hv) && stashpv_hvname_match(c,hv))
 #  ifdef NETWARE
 #    define CopSTASH_free(c) SAVECOPSTASH_FREE(c)
-#  else
-#    define CopSTASH_free(c)   PerlMemShared_free(CopSTASHPV(c))      
-#  endif
-
-#  ifdef NETWARE
 #    define CopFILE_free(c) SAVECOPFILE_FREE(c)
 #  else
-#    define CopFILE_free(c)    (PerlMemShared_free(CopFILE(c)),(CopFILE(c) = Nullch))      
+#    define CopSTASH_free(c)   PerlMemShared_free(CopSTASHPV(c))
+#    define CopFILE_free(c)    (PerlMemShared_free(CopFILE(c)),(CopFILE(c) = Nullch))
 #  endif
 #else
 #  define CopFILEGV(c)         ((c)->cop_filegv)
@@ -202,7 +195,7 @@ struct cop {
 #  define CopFILE(c)           (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch)
 #  define CopSTASH(c)          ((c)->cop_stash)
 #  define CopSTASH_set(c,hv)   ((c)->cop_stash = (hv))
-#  define CopSTASHPV(c)                (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch)
+#  define CopSTASHPV(c)                (CopSTASH(c) ? HvNAME_get(CopSTASH(c)) : Nullch)
    /* cop_stash is not refcounted */
 #  define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD))
 #  define CopSTASH_eq(c,hv)    (CopSTASH(c) == (hv))
@@ -302,7 +295,7 @@ struct block_sub {
                SvREFCNT_dec(cx->blk_sub.argarray);                     \
                cx->blk_sub.argarray = newAV();                         \
                av_extend(cx->blk_sub.argarray, fill);                  \
-               AvFLAGS(cx->blk_sub.argarray) = AVf_REIFY;              \
+               AvREIFY_only(cx->blk_sub.argarray);                     \
                CX_CURPAD_SV(cx->blk_sub, 0) = (SV*)cx->blk_sub.argarray;       \
            }                                                           \
            else {                                                      \
@@ -333,6 +326,7 @@ struct block_eval {
     SV *       cur_text;
     CV *       cv;
     OP *       retop;  /* op to execute on exit from eval */
+    JMPENV *   cur_top_env; /* value of PL_top_env when eval CX created */
 };
 
 #define PUSHEVAL(cx,n,fgv)                                             \
@@ -344,6 +338,7 @@ struct block_eval {
        cx->blk_eval.cur_text = PL_linestr;                             \
        cx->blk_eval.cv = Nullcv; /* set by doeval(), as applicable */  \
        cx->blk_eval.retop = Nullop;                                    \
+       cx->blk_eval.cur_top_env = PL_top_env;                          \
     } STMT_END
 
 #define POPEVAL(cx)                                                    \