#17171: ld flag for shrplib on OpenBSD
[p5sagit/p5-mst-13.2.git] / dump.c
diff --git a/dump.c b/dump.c
index 520b210..45d7494 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -1021,7 +1021,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
                                sv_catpv(d, "TYPED,");
        break;
     }
-    if (SvPOK(sv) && SvUTF8(sv))
+    if ((SvPOK(sv) || SvPOKp(sv)) && SvUTF8(sv))
         sv_catpv(d, "UTF8");
 
     if (*(SvEND(d) - 1) == ',')
@@ -1118,8 +1118,6 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
        Perl_dump_indent(aTHX_ level, file, "  RV = 0x%"UVxf"\n", PTR2UV(SvRV(sv)));
        if (nest < maxnest)
            do_sv_dump(level+1, file, SvRV(sv), nest+1, maxnest, dumpops, pvlim);
-       SvREFCNT_dec(d);
-       return;
     }
     if (type < SVt_PV) {
        SvREFCNT_dec(d);
@@ -1288,34 +1286,12 @@ 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));
-#ifdef USE_5005THREADS
-       Perl_dump_indent(aTHX_ level, file, "  MUTEXP = 0x%"UVxf"\n", PTR2UV(CvMUTEXP(sv)));
-       Perl_dump_indent(aTHX_ level, file, "  OWNER = 0x%"UVxf"\n",  PTR2UV(CvOWNER(sv)));
-#endif /* USE_5005THREADS */
        Perl_dump_indent(aTHX_ level, file, "  FLAGS = 0x%"UVxf"\n", (UV)CvFLAGS(sv));
        if (type == SVt_PVFM)
            Perl_dump_indent(aTHX_ level, file, "  LINES = %"IVdf"\n", (IV)FmLINES(sv));
        Perl_dump_indent(aTHX_ level, file, "  PADLIST = 0x%"UVxf"\n", PTR2UV(CvPADLIST(sv)));
-       if (nest < maxnest && CvPADLIST(sv)) {
-           AV* padlist = CvPADLIST(sv);
-           AV* pad_name = (AV*)*av_fetch(padlist, 0, FALSE);
-           AV* pad = (AV*)*av_fetch(padlist, 1, FALSE);
-           SV** pname = AvARRAY(pad_name);
-           SV** ppad = AvARRAY(pad);
-           I32 ix;
-
-           for (ix = 1; ix <= AvFILL(pad_name); ix++) {
-               if (SvPOK(pname[ix]))
-                   Perl_dump_indent(aTHX_ level,
-                               /* %5d below is enough whitespace. */
-                               file,
-                               "%5d. 0x%"UVxf" (%s\"%s\" %"IVdf"-%"IVdf")\n",
-                               (int)ix, PTR2UV(ppad[ix]),
-                               SvFAKE(pname[ix]) ? "FAKE " : "",
-                               SvPVX(pname[ix]),
-                               (IV)SvNVX(pname[ix]),
-                               (IV)SvIVX(pname[ix]));
-           }
+       if (nest < maxnest) {
+           do_dump_pad(level+1, file, CvPADLIST(sv), 0);
        }
        {
            CV *outside = CvOUTSIDE(sv);