Skip another file in the VERSION comparison program
[p5sagit/p5-mst-13.2.git] / dump.c
diff --git a/dump.c b/dump.c
index bd11207..0613573 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -779,9 +779,9 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o)
                if (CopSTASHPV(cCOPo))
                    Perl_dump_indent(aTHX_ level, file, "PACKAGE = \"%s\"\n",
                                     CopSTASHPV(cCOPo));
-               if (cCOPo->cop_label)
+               if (CopLABEL(cCOPo))
                    Perl_dump_indent(aTHX_ level, file, "LABEL = \"%s\"\n",
-                                    cCOPo->cop_label);
+                                    CopLABEL(cCOPo));
            }
        }
        else
@@ -982,7 +982,7 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o)
                sv_catpv(tmpsv, ",HUSH_VMSISH");
        }
        else if (PL_check[optype] != MEMBER_TO_FPTR(Perl_ck_ftst)) {
-           if (OP_IS_FILETEST_ACCESS(o) && o->op_private & OPpFT_ACCESS)
+           if (OP_IS_FILETEST_ACCESS(o->op_type) && o->op_private & OPpFT_ACCESS)
                sv_catpv(tmpsv, ",FT_ACCESS");
            if (o->op_private & OPpFT_STACKED)
                sv_catpv(tmpsv, ",FT_STACKED");
@@ -1081,9 +1081,9 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o)
        if (CopSTASHPV(cCOPo))
            Perl_dump_indent(aTHX_ level, file, "PACKAGE = \"%s\"\n",
                             CopSTASHPV(cCOPo));
-       if (cCOPo->cop_label)
+       if (CopLABEL(cCOPo))
            Perl_dump_indent(aTHX_ level, file, "LABEL = \"%s\"\n",
-                            cCOPo->cop_label);
+                            CopLABEL(cCOPo));
        break;
     case OP_ENTERLOOP:
        Perl_dump_indent(aTHX_ level, file, "REDO ===> ");
@@ -1563,7 +1563,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
        return;
     }
     if ((type >= SVt_PVIV && type != SVt_PVAV && type != SVt_PVHV
-        && type != SVt_PVCV && !isGV_with_GP(sv))
+        && type != SVt_PVCV && !isGV_with_GP(sv) && type != SVt_PVFM)
        || (type == SVt_IV && !SvROK(sv))) {
        if (SvIsUV(sv)
 #ifdef PERL_OLD_COPY_ON_WRITE
@@ -1608,7 +1608,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
        SvREFCNT_dec(d);
        return;
     }
-    if (type <= SVt_PVLV && !isGV_with_GP(sv)) {
+    if ((type <= SVt_PVLV && !isGV_with_GP(sv)) || type == SVt_PVFM) {
        if (SvPVX_const(sv)) {
            STRLEN delta;
            if (SvOOK(sv)) {
@@ -1826,7 +1826,8 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
        }
        do_gvgv_dump(level, file, "  GVGV::GV", CvGV(sv));
        Perl_dump_indent(aTHX_ level, file, "  FILE = \"%s\"\n", CvFILE(sv));
-       Perl_dump_indent(aTHX_ level, file, "  DEPTH = %"IVdf"\n", (IV)CvDEPTH(sv));
+       if (type == SVt_PVCV)
+           Perl_dump_indent(aTHX_ level, file, "  DEPTH = %"IVdf"\n", (IV)CvDEPTH(sv));
        Perl_dump_indent(aTHX_ level, file, "  FLAGS = 0x%"UVxf"\n", (UV)CvFLAGS(sv));
        Perl_dump_indent(aTHX_ level, file, "  OUTSIDE_SEQ = %"UVuf"\n", (UV)CvOUTSIDE_SEQ(sv));
        if (type == SVt_PVFM)
@@ -2002,7 +2003,14 @@ Perl_debop(pTHX_ const OP *o)
     switch (o->op_type) {
     case OP_CONST:
     case OP_HINTSEVAL:
-       PerlIO_printf(Perl_debug_log, "(%s)", SvPEEK(cSVOPo_sv));
+       /* With ITHREADS, consts are stored in the pad, and the right pad
+        * may not be active here, so check.
+        * Looks like only during compiling the pads are illegal.
+        */
+#ifdef USE_ITHREADS
+       if ((((SVOP*)o)->op_sv) || !IN_PERL_COMPILETIME)
+#endif
+           PerlIO_printf(Perl_debug_log, "(%s)", SvPEEK(cSVOPo_sv));
        break;
     case OP_GVSV:
     case OP_GV:
@@ -2534,8 +2542,8 @@ Perl_do_pmop_xmldump(pTHX_ I32 level, PerlIO *file, const PMOP *pm)
     level++;
     if (PM_GETRE(pm)) {
        REGEXP *const r = PM_GETRE(pm);
-       SV * const tmpsv = newSVsv((SV*)r);
-       sv_utf8_upgrade(tmpsv);
+       SV * const tmpsv = newSVpvn_utf8("", 0, TRUE);
+       sv_catxmlsv(tmpsv, (SV*)r);
        Perl_xmldump_indent(aTHX_ level, file, "pre=\"%s\"\n",
             SvPVX(tmpsv));
        SvREFCNT_dec(tmpsv);
@@ -2603,9 +2611,9 @@ Perl_do_op_xmldump(pTHX_ I32 level, PerlIO *file, const OP *o)
                if (CopSTASHPV(cCOPo))
                    PerlIO_printf(file, " package=\"%s\"",
                                     CopSTASHPV(cCOPo));
-               if (cCOPo->cop_label)
+               if (CopLABEL(cCOPo))
                    PerlIO_printf(file, " label=\"%s\"",
-                                    cCOPo->cop_label);
+                                    CopLABEL(cCOPo));
            }
        }
        else
@@ -2800,7 +2808,7 @@ Perl_do_op_xmldump(pTHX_ I32 level, PerlIO *file, const OP *o)
                sv_catpv(tmpsv, ",HUSH_VMSISH");
        }
        else if (PL_check[o->op_type] != MEMBER_TO_FPTR(Perl_ck_ftst)) {
-           if (OP_IS_FILETEST_ACCESS(o) && o->op_private & OPpFT_ACCESS)
+           if (OP_IS_FILETEST_ACCESS(o->op_type) && o->op_private & OPpFT_ACCESS)
                sv_catpv(tmpsv, ",FT_ACCESS");
            if (o->op_private & OPpFT_STACKED)
                sv_catpv(tmpsv, ",FT_STACKED");
@@ -2864,9 +2872,9 @@ Perl_do_op_xmldump(pTHX_ I32 level, PerlIO *file, const OP *o)
        if (CopSTASHPV(cCOPo))
            S_xmldump_attr(aTHX_ level, file, "package=\"%s\"",
                             CopSTASHPV(cCOPo));
-       if (cCOPo->cop_label)
+       if (CopLABEL(cCOPo))
            S_xmldump_attr(aTHX_ level, file, "label=\"%s\"",
-                            cCOPo->cop_label);
+                            CopLABEL(cCOPo));
        break;
     case OP_ENTERLOOP:
        S_xmldump_attr(aTHX_ level, file, "redo=\"");