In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/f39615e17975f2e0ce3fbd18aa34fd279b58912e?hp=cdb996f424d39d435ae0f0a024fbf20c38221b9e>

- Log -----------------------------------------------------------------
commit f39615e17975f2e0ce3fbd18aa34fd279b58912e
Author: David Mitchell <da...@iabyn.com>
Date:   Thu Jul 29 19:37:16 2010 +0100

    Peek.t: better identify failing tests

M       ext/Devel-Peek/t/Peek.t

commit 31d45e0cf4f5ee720de85bdd07d3a502f2e9de9d
Author: David Mitchell <da...@iabyn.com>
Date:   Thu Jul 29 19:11:32 2010 +0100

    Dump didn't display CVf_ISXSUB flag

M       dump.c
M       ext/Devel-Peek/t/Peek.t

commit 8530ff282653a25fc2e4a3560c503d74509ca31b
Author: David Mitchell <da...@iabyn.com>
Date:   Thu Jul 29 19:06:02 2010 +0100

    Perl_do_sv_dump didn't increase nesting for magic

M       dump.c

commit 002beaef76a1595af2e39ffd4cd55c595bd6c271
Author: David Mitchell <da...@iabyn.com>
Date:   Thu Jul 29 18:57:11 2010 +0100

    Perl_do_sv_dump: alert when skipping elements
    
    When dumping an HV, we skip dumping the elements if the iterator is
    already in use. Explain this in the dump output so people like me aren't
    left wondering why the elements have vanished.

M       dump.c
-----------------------------------------------------------------------

Summary of changes:
 dump.c                  |   54 ++++++++++++++++++++++++++--------------------
 ext/Devel-Peek/t/Peek.t |    6 +++-
 2 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/dump.c b/dump.c
index 843eb88..76f276e 100644
--- a/dump.c
+++ b/dump.c
@@ -1500,7 +1500,8 @@ const struct flag_to_name cv_flags_names[] = {
     {CVf_LVALUE, "LVALUE,"},
     {CVf_METHOD, "METHOD,"},
     {CVf_WEAKOUTSIDE, "WEAKOUTSIDE,"},
-    {CVf_CVGV_RC, "CVGV_RC,"}
+    {CVf_CVGV_RC, "CVGV_RC,"},
+    {CVf_ISXSUB, "ISXSUB,"}
 };
 
 const struct flag_to_name hv_flags_names[] = {
@@ -1733,7 +1734,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, 
I32 nest, I32 maxnest, bo
                do_hv_dump(level, file, "  OURSTASH", ost);
        } else {
            if (SvMAGIC(sv))
-               do_magic_dump(level, file, SvMAGIC(sv), nest, maxnest, dumpops, 
pvlim);
+               do_magic_dump(level, file, SvMAGIC(sv), nest+1, maxnest, 
dumpops, pvlim);
        }
        if (SvSTASH(sv))
            do_hv_dump(level, file, "  STASH", SvSTASH(sv));
@@ -1884,29 +1885,34 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, 
I32 nest, I32 maxnest, bo
                }
            }
        }
-       if (nest < maxnest && !HvEITER_get(sv)) { /* Try to preserve iterator */
-           HE *he;
-           HV * const hv = MUTABLE_HV(sv);
-           int count = maxnest - nest;
-
-           hv_iterinit(hv);
-           while ((he = hv_iternext_flags(hv, HV_ITERNEXT_WANTPLACEHOLDERS))
-                   && count--) {
-               STRLEN len;
-               const U32 hash = HeHASH(he);
-               SV * const keysv = hv_iterkeysv(he);
-               const char * const keypv = SvPV_const(keysv, len);
-               SV * const elt = hv_iterval(hv, he);
-
-               Perl_dump_indent(aTHX_ level+1, file, "Elt %s ", pv_display(d, 
keypv, len, 0, pvlim));
-               if (SvUTF8(keysv))
-                   PerlIO_printf(file, "[UTF8 \"%s\"] ", sv_uni_display(d, 
keysv, 6 * SvCUR(keysv), UNI_DISPLAY_QQ));
-               if (HeKREHASH(he))
-                   PerlIO_printf(file, "[REHASH] ");
-               PerlIO_printf(file, "HASH = 0x%"UVxf"\n", (UV)hash);
-               do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim);
+       if (nest < maxnest) {
+           if (HvEITER_get(sv)) /* preserve iterator */
+               Perl_dump_indent(aTHX_ level, file,
+                   "  (*** Active iterator; skipping element dump ***)\n");
+           else {
+               HE *he;
+               HV * const hv = MUTABLE_HV(sv);
+               int count = maxnest - nest;
+
+               hv_iterinit(hv);
+               while ((he = hv_iternext_flags(hv, 
HV_ITERNEXT_WANTPLACEHOLDERS))
+                      && count--) {
+                   STRLEN len;
+                   const U32 hash = HeHASH(he);
+                   SV * const keysv = hv_iterkeysv(he);
+                   const char * const keypv = SvPV_const(keysv, len);
+                   SV * const elt = hv_iterval(hv, he);
+
+                   Perl_dump_indent(aTHX_ level+1, file, "Elt %s ", 
pv_display(d, keypv, len, 0, pvlim));
+                   if (SvUTF8(keysv))
+                       PerlIO_printf(file, "[UTF8 \"%s\"] ", sv_uni_display(d, 
keysv, 6 * SvCUR(keysv), UNI_DISPLAY_QQ));
+                   if (HeKREHASH(he))
+                       PerlIO_printf(file, "[REHASH] ");
+                   PerlIO_printf(file, "HASH = 0x%"UVxf"\n", (UV)hash);
+                   do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, 
pvlim);
+               }
+               hv_iterinit(hv);                /* Return to status quo */
            }
-           hv_iterinit(hv);            /* Return to status quo */
        }
        break;
     case SVt_PVCV:
diff --git a/ext/Devel-Peek/t/Peek.t b/ext/Devel-Peek/t/Peek.t
index 1fb1a5d..4e39d10 100644
--- a/ext/Devel-Peek/t/Peek.t
+++ b/ext/Devel-Peek/t/Peek.t
@@ -76,7 +76,9 @@ sub do_test {
            print $pattern, "\n" if $DEBUG;
            my ($dump, $dump2) = split m/\*\*\*\*\*\n/, scalar <IN>;
            print $dump, "\n"    if $DEBUG;
-           like( $dump, qr/\A$pattern\Z/ms );
+           like( $dump, qr/\A$pattern\Z/ms,
+               "test id $_[0], line " . (caller)[2]);
+
 
             local $TODO = $repeat_todo;
             is($dump2, $dump);
@@ -571,7 +573,7 @@ do_test(23,
   RV = $ADDR
   SV = PVCV\\($ADDR\\) at $ADDR
     REFCNT = (2)
-    FLAGS = \\(POK,pPOK,CONST\\)
+    FLAGS = \\(POK,pPOK,CONST,ISXSUB\\)
     IV = 0                                     # $] < 5.009
     NV = 0                                     # $] < 5.009
     PROTOTYPE = ""

--
Perl5 Master Repository

Reply via email to