Change 33465 by [EMAIL PROTECTED] on 2008/03/10 21:18:14
Integrate:
[ 31588]
Subject: [PATCH] dump.c: do not use sv_len_utf8 because it modified the
scalar
From: Gerard Goossen <[EMAIL PROTECTED]>
Date: Wed, 11 Jul 2007 19:19:11 +0200
Message-ID: <[EMAIL PROTECTED]>
do not use sv_len_utf8 because it modified the scalar.
Add a test to Peek.t to check that dumping doesn't modify anything;
the test is still TODO because hashiteration in dump.c set the OOK flag.
[the dump.c part. The test will need to be intergrated with the rest of
the Devel::Peek test change backlog]
Affected files ...
... //depot/maint-5.8/perl/dump.c#85 integrate
Differences ...
==== //depot/maint-5.8/perl/dump.c#85 (text) ====
Index: perl/dump.c
--- perl/dump.c#84~33188~ 2008-02-02 07:58:54.000000000 -0800
+++ perl/dump.c 2008-03-10 14:18:14.000000000 -0700
@@ -471,7 +471,7 @@
Perl_sv_catpvf(aTHX_ t, "%s)", pv_display(tmp, (char
*)SvPVX_const(sv), SvCUR(sv), SvLEN(sv), 127));
if (SvUTF8(sv))
Perl_sv_catpvf(aTHX_ t, " [UTF8 \"%s\"]",
- sv_uni_display(tmp, sv, 8 * sv_len_utf8(sv),
+ sv_uni_display(tmp, sv, 6 * SvCUR(sv),
UNI_DISPLAY_QQ));
SvREFCNT_dec(tmp);
}
@@ -1323,8 +1323,8 @@
if (SvOOK(sv))
PerlIO_printf(file, "( %s . ) ", pv_display(d, (char
*)SvPVX_const(sv)-SvIVX(sv), SvIVX(sv), 0, pvlim));
PerlIO_printf(file, "%s", pv_display(d, (char *)SvPVX_const(sv),
SvCUR(sv), SvLEN(sv), pvlim));
- if (SvUTF8(sv)) /* the 8? \x{....} */
- PerlIO_printf(file, " [UTF8 \"%s\"]", sv_uni_display(d, sv, 8 *
sv_len_utf8(sv), UNI_DISPLAY_QQ));
+ if (SvUTF8(sv)) /* the 6? \x{....} */
+ PerlIO_printf(file, " [UTF8 \"%s\"]", sv_uni_display(d, sv, 6 *
SvCUR(sv), UNI_DISPLAY_QQ));
PerlIO_printf(file, "\n");
Perl_dump_indent(aTHX_ level, file, " CUR = %"IVdf"\n",
(IV)SvCUR(sv));
Perl_dump_indent(aTHX_ level, file, " LEN = %"IVdf"\n",
(IV)SvLEN(sv));
@@ -1461,7 +1461,7 @@
Perl_dump_indent(aTHX_ level+1, file, "Elt %s ", pv_display(d,
(char *)keypv, len, 0, pvlim));
if (SvUTF8(keysv))
- PerlIO_printf(file, "[UTF8 \"%s\"] ", sv_uni_display(d,
keysv, 8 * sv_len_utf8(keysv), UNI_DISPLAY_QQ));
+ 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);
End of Patch.