Change 33943 by [EMAIL PROTECTED] on 2008/05/28 15:54:22

        Integrate:
        [ 33414]
        Subject: [perl #46957] [PATCH] make Devel::Peek::mstat always available
        From: [EMAIL PROTECTED] (via RT) <[EMAIL PROTECTED]>
        Date: Sat, 27 Oct 2007 11:33:57 -0700
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33416]
        Subject: Re: [PATCH] NEXT.pm bug within overloaded stringification
        From: Marcel Grünauer <[EMAIL PROTECTED]>
        Message-Id: <[EMAIL PROTECTED]>
        Date: Mon, 3 Mar 2008 16:08:48 +0100
        
        (a resend of <[EMAIL PROTECTED]>)
        
        [ 33434]
        Subject: [perl #50538] when( @n && %n ) fails to smart match
        From: "brian d foy" (via RT) <[EMAIL PROTECTED]>
        Date: Mon, 04 Feb 2008 19:36:01 -0800
        Message-ID: <[EMAIL PROTECTED]>
        
        Updated tests in ticket to become TODO tests
        
        [ 33439]
        Bump VERSION after change #33416
        (so we don't end up with different code but same version in
        5.10.0 and, say, 5.10.1)
        
        [ 33442]
        Better line diagnostics - runlint's caller rather than runlint itself.
        
        [ 33445]
        Bring the joy of strict to ext/B/t/lint.t.
        
        [ 33447]
        Refactoring the /Can't return (?:array|hash) to scalar context/ croak
        logic in pp_rv2av into one place saves 112 bytes here.
        
        [ 33457]
        Subject: [PATCH] count-only transliteration needlessly makes 
copy-on-write 
        From: "Yitzchak Scott-Thoennes" <[EMAIL PROTECTED]>
        Date: Tue, 4 Mar 2008 16:54:29 -0800 (PST)
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33458]
        Subject: Re: [PATCH] mg_magical() sometimes turns SvRMAGICAL on when it 
shouldn't
        From: Vincent Pit <[EMAIL PROTECTED]>
        Date: Fri, 08 Feb 2008 23:22:19 +0100
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33463]
        Silence warning from VC++ following #33447
        (not all control paths return a value)
        
        [ 33466]
        Subject: [PATCH] MAD update list of failures in mad/t/p55.t
        From: Gerard Goossen <[EMAIL PROTECTED]>
        Date: Mon, 10 Mar 2008 15:17:08 +0100
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33467]
        Subject: [PATCH] Re: [PATCH] MAD fix p55 $[
        From: Gerard Goossen <[EMAIL PROTECTED]>
        Date: Mon, 10 Mar 2008 15:44:03 +0100
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33470]
        Subject: Re: [PATCH] make Archive::Extract's x.lzma test file be lzma'd,
        From: "Yitzchak Scott-Thoennes" <[EMAIL PROTECTED]>
        Date: Tue, 4 Mar 2008 00:28:34 -0800 (PST)
        Message-ID: <[EMAIL PROTECTED]>

Affected files ...

... //depot/maint-5.10/perl/MANIFEST#27 integrate
... //depot/maint-5.10/perl/doop.c#4 integrate
... //depot/maint-5.10/perl/ext/B/t/lint.t#2 integrate
... //depot/maint-5.10/perl/ext/Devel/Peek/Peek.xs#2 integrate
... //depot/maint-5.10/perl/ext/XS/APItest/APItest.pm#4 integrate
... //depot/maint-5.10/perl/ext/XS/APItest/APItest.xs#3 integrate
... //depot/maint-5.10/perl/ext/XS/APItest/t/rmagical.t#1 branch
... //depot/maint-5.10/perl/lib/Archive/Extract/t/src/x.lzma.packed#2 integrate
... //depot/maint-5.10/perl/lib/NEXT.pm#2 integrate
... //depot/maint-5.10/perl/lib/NEXT/t/stringify.t#1 branch
... //depot/maint-5.10/perl/mad/t/p55.t#2 integrate
... //depot/maint-5.10/perl/malloc.c#4 integrate
... //depot/maint-5.10/perl/mg.c#8 integrate
... //depot/maint-5.10/perl/op.c#12 integrate
... //depot/maint-5.10/perl/pp_hot.c#13 integrate
... //depot/maint-5.10/perl/t/op/switch.t#2 integrate
... //depot/maint-5.10/perl/t/op/tr.t#2 integrate

Differences ...

==== //depot/maint-5.10/perl/MANIFEST#27 (text) ====
Index: perl/MANIFEST
--- perl/MANIFEST#26~33941~     2008-05-27 15:58:13.000000000 -0700
+++ perl/MANIFEST       2008-05-28 08:54:22.000000000 -0700
@@ -1260,6 +1260,7 @@
 ext/XS/APItest/t/op.t          XS::APItest: tests for OP related APIs
 ext/XS/APItest/t/printf.t      XS::APItest extension
 ext/XS/APItest/t/push.t                XS::APItest extension
+ext/XS/APItest/t/rmagical.t    XS::APItest extension
 ext/XS/APItest/t/svsetsv.t     Test behaviour of sv_setsv with/without 
PERL_CORE
 ext/XS/APItest/t/xs_special_subs_require.t     for require too
 ext/XS/APItest/t/xs_special_subs.t     Test that XS BEGIN/CHECK/INIT/END work
@@ -2306,6 +2307,7 @@
 lib/NEXT/t/actual.t            NEXT
 lib/NEXT/t/actuns.t            NEXT
 lib/NEXT/t/next.t              NEXT
+lib/NEXT/t/stringify.t NEXT
 lib/NEXT/t/unseen.t            NEXT
 lib/Object/Accessor.pm Object::Accessor
 lib/Object/Accessor/t/00_Object-Accessor.t     Object::Accessor tests

==== //depot/maint-5.10/perl/doop.c#4 (text) ====
Index: perl/doop.c
--- perl/doop.c#3~33880~        2008-05-20 05:15:13.000000000 -0700
+++ perl/doop.c 2008-05-28 08:54:22.000000000 -0700
@@ -621,10 +621,10 @@
     const I32 hasutf = (PL_op->op_private &
                     (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF));
 
-    if (SvREADONLY(sv)) {
+    if (SvREADONLY(sv) && !(PL_op->op_private & OPpTRANS_IDENTICAL)) {
         if (SvIsCOW(sv))
             sv_force_normal_flags(sv, 0);
-        if (SvREADONLY(sv) && !(PL_op->op_private & OPpTRANS_IDENTICAL))
+        if (SvREADONLY(sv))
             Perl_croak(aTHX_ PL_no_modify);
     }
     (void)SvPV_const(sv, len);

==== //depot/maint-5.10/perl/ext/B/t/lint.t#2 (text) ====
Index: perl/ext/B/t/lint.t
--- perl/ext/B/t/lint.t#1~32694~        2007-12-22 01:23:09.000000000 -0800
+++ perl/ext/B/t/lint.t 2008-05-28 08:54:22.000000000 -0700
@@ -16,6 +16,8 @@
     }
     require 'test.pl';
 }
+use strict;
+use warnings;
 
 plan tests => 29;
 
@@ -29,6 +31,7 @@
         stderr   => 1,
     );
     $res =~ s/-e syntax OK\n$//;
+    local $::Level = $::Level + 1;
     is( $res, $result, $testname || $opts );
 }
 

==== //depot/maint-5.10/perl/ext/Devel/Peek/Peek.xs#2 (text) ====
Index: perl/ext/Devel/Peek/Peek.xs
--- perl/ext/Devel/Peek/Peek.xs#1~32694~        2007-12-22 01:23:09.000000000 
-0800
+++ perl/ext/Devel/Peek/Peek.xs 2008-05-28 08:54:22.000000000 -0700
@@ -127,16 +127,14 @@
 #endif /* !PURIFY */
 }
 
-#if (defined(PERL_DEBUGGING_MSTATS) || defined(DEBUGGING_MSTATS)) \
-       && (defined(MYMALLOC) && !defined(PLAIN_MALLOC))
+#if defined(MYMALLOC)
 #   define mstat(str) dump_mstats(str)
 #else
 #   define mstat(str) \
-       PerlIO_printf(Perl_debug_log, "%s: perl not compiled with 
DEBUGGING_MSTATS\n",str);
+       PerlIO_printf(Perl_debug_log, "%s: perl not compiled with 
MYMALLOC\n",str);
 #endif
 
-#if (defined(PERL_DEBUGGING_MSTATS) || defined(DEBUGGING_MSTATS)) \
-       && (defined(MYMALLOC) && !defined(PLAIN_MALLOC))
+#if defined(MYMALLOC)
 
 /* Very coarse overestimate, 2-per-power-of-2, one more to determine NBUCKETS. 
*/
 #  define _NBUCKETS (2*8*IVSIZE+1)
@@ -293,7 +291,7 @@
        croak("Wrong size for a value with a mstats buffer");
     _mstats_to_hv((HV *)SvRV(rv), (struct mstats_buffer*)SvPVX(sv), level);
 }
-#else  /* !( defined(PERL_DEBUGGING_MSTATS) || defined(DEBUGGING_MSTATS) \ ) 
*/ 
+#else  /* defined(MYMALLOC) */ 
 static void
 fill_mstats(SV *sv, int level)
 {
@@ -311,7 +309,7 @@
 {
     croak("Cannot report mstats without Perl malloc");
 }
-#endif /* defined(PERL_DEBUGGING_MSTATS) || defined(DEBUGGING_MSTATS)... */ 
+#endif /* defined(MYMALLOC) */ 
 
 #define _CvGV(cv)                                      \
        (SvROK(cv) && (SvTYPE(SvRV(cv))==SVt_PVCV)      \

==== //depot/maint-5.10/perl/ext/XS/APItest/APItest.pm#4 (text) ====
Index: perl/ext/XS/APItest/APItest.pm
--- perl/ext/XS/APItest/APItest.pm#3~33857~     2008-05-18 12:29:48.000000000 
-0700
+++ perl/ext/XS/APItest/APItest.pm      2008-05-28 08:54:22.000000000 -0700
@@ -22,9 +22,10 @@
                  apitest_exception mycroak strtab
                  my_cxt_getint my_cxt_getsv my_cxt_setint my_cxt_setsv
                  sv_setsv_cow_hashkey_core sv_setsv_cow_hashkey_notcore
+                 rmagical_cast rmagical_flags
 );
 
-our $VERSION = '0.13';
+our $VERSION = '0.14';
 
 use vars '$WARNINGS_ON_BOOTSTRAP';
 use vars map "\$${_}_called_PP", qw(BEGIN UNITCHECK CHECK INIT END);

==== //depot/maint-5.10/perl/ext/XS/APItest/APItest.xs#3 (text) ====
Index: perl/ext/XS/APItest/APItest.xs
--- perl/ext/XS/APItest/APItest.xs#2~32700~     2007-12-22 03:55:16.000000000 
-0800
+++ perl/ext/XS/APItest/APItest.xs      2008-05-28 08:54:22.000000000 -0700
@@ -233,6 +233,13 @@
     return 0;
 }
 
+STATIC I32
+rmagical_a_dummy(pTHX_ IV idx, SV *sv) {
+    return 0;
+}
+
+STATIC MGVTBL rmagical_b = { 0 };
+
 #include "const-c.inc"
 
 MODULE = XS::APItest:Hash              PACKAGE = XS::APItest::Hash
@@ -813,6 +820,38 @@
 sv_setsv_cow_hashkey_notcore()
 
 void
+rmagical_cast(sv, type)
+    SV *sv;
+    SV *type;
+    PREINIT:
+       struct ufuncs uf;
+    PPCODE:
+       if (!SvOK(sv) || !SvROK(sv) || !SvOK(type)) { XSRETURN_UNDEF; }
+       sv = SvRV(sv);
+       if (SvTYPE(sv) != SVt_PVHV) { XSRETURN_UNDEF; }
+       uf.uf_val = rmagical_a_dummy;
+       uf.uf_set = NULL;
+       uf.uf_index = 0;
+       if (SvTRUE(type)) { /* b */
+           sv_magicext(sv, NULL, PERL_MAGIC_ext, &rmagical_b, NULL, 0);
+       } else { /* a */
+           sv_magic(sv, NULL, PERL_MAGIC_uvar, (char *) &uf, sizeof(uf));
+       }
+       XSRETURN_YES;
+
+void
+rmagical_flags(sv)
+    SV *sv;
+    PPCODE:
+       if (!SvOK(sv) || !SvROK(sv)) { XSRETURN_UNDEF; }
+       sv = SvRV(sv);
+        EXTEND(SP, 3); 
+       mXPUSHu(SvFLAGS(sv) & SVs_GMG);
+       mXPUSHu(SvFLAGS(sv) & SVs_SMG);
+       mXPUSHu(SvFLAGS(sv) & SVs_RMG);
+        XSRETURN(3);
+
+void
 BEGIN()
     CODE:
        sv_inc(get_sv("XS::APItest::BEGIN_called", GV_ADD|GV_ADDMULTI));

==== //depot/maint-5.10/perl/ext/XS/APItest/t/rmagical.t#1 (text) ====
Index: perl/ext/XS/APItest/t/rmagical.t
--- /dev/null   2008-05-07 15:08:24.549929899 -0700
+++ perl/ext/XS/APItest/t/rmagical.t    2008-05-28 08:54:22.000000000 -0700
@@ -0,0 +1,29 @@
+#!perl
+
+# Consider two kinds of magic :
+# A : PERL_MAGIC_uvar, with get (but no set) magic
+# B : PERL_MAGIC_ext, with a zero vtbl
+# If those magic are attached on a sv in such a way that the MAGIC chain
+# looks like sv -> B -> A -> NULL (i.e. we first apply A and then B), then
+# mg_magical won't turn SvRMAGICAL on. However, if the chain is in the
+# opposite order (sv -> A -> B -> NULL), SvRMAGICAL used to be turned on.
+
+use strict;
+use warnings;
+
+use Test::More tests => 3;
+
+use_ok('XS::APItest');
+
+my (%h1, %h2);
+my @f;
+
+rmagical_cast(\%h1, 0); # A
+rmagical_cast(\%h1, 1); # B
[EMAIL PROTECTED] = rmagical_flags(\%h1);
+ok(!$f[2], "For sv -> B -> A -> NULL, SvRMAGICAL(sv) is false");
+
+rmagical_cast(\%h2, 1); # B
+rmagical_cast(\%h2, 0); # A
[EMAIL PROTECTED] = rmagical_flags(\%h2);
+ok(!$f[2], "For sv -> A -> B -> NULL, SvRMAGICAL(sv) is false");

==== //depot/maint-5.10/perl/lib/Archive/Extract/t/src/x.lzma.packed#2 (text) 
====
Index: perl/lib/Archive/Extract/t/src/x.lzma.packed
--- perl/lib/Archive/Extract/t/src/x.lzma.packed#1~33113~       2008-01-29 
14:22:25.000000000 -0800
+++ perl/lib/Archive/Extract/t/src/x.lzma.packed        2008-05-28 
08:54:22.000000000 -0700
@@ -10,198 +10,7 @@
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.lzma 
lib/Archive/Extract/t/src/x.lzma.packed
 
-Created at Mon Jan 28 14:00:38 2008
+Created at Tue Mar  4 00:26:10 2008
 #########################################################################
 __UU__
-M(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C
-M(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(PI4:&ES(&ES(&[EMAIL PROTECTED])Y
-M(&9I;&[EMAIL PROTECTED]&AA="!W87,@<&%C:V5D('=I=&@@=&AE("=U=7!A8VMT;V]L+G!L
-M)R!W:&EC:`II<R!I;F-L=61E9"!I;B!T:&[EMAIL PROTECTED]&5R;"!D:7-T<FEB=71I;VXN
-M"@I4;R!U;[EMAIL PROTECTED]&AI<R!F:6QE('5S92!T:&[EMAIL 
PROTECTED];&]W:6YG(&-O;6UA
-M;F0Z"@H@("`@('5U<&%C:W1O;VPN<&[EMAIL PROTECTED]@;&EB+T%R8VAI=F4O17AT<F%C
-M="]T+W-R8R]X+FQZ;[EMAIL PROTECTED]&]O;"YP;`H*5&\@<F5C<F5A=&4@:70@
-M=7-E('1H92!F;VQL;W=I;F<@8V]M;6%N9#H*"B`@("[EMAIL PROTECTED]&]O;"YP
-M;"`M<"!U=7!A8VMT;V]L+G!L(&QI8B]!<F-H:79E+T5X=')A8W0O="]S<F,O
-M>"YL>FUA"@I#<F5A=&5D(&%T($UO;B!*86X@,C@@,3,Z-3DZ,S<@,C`P.`HC
-M(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C
-M(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C"E]?555?7PI-*%(E4#DW*4PB
-M0$E5/%8T0#Q7,5(Z-BU4+E!)53Q6-$`]5B52.T9%3CE7+%LB1S53.3(A)SDW
-M,4\\)S!:"DTN1%%/.T8\6R)'-5,Y,B$F.C9112Y#22(X-RU%.T8E33DS3"H]
-M-RU%*"0Y23LF-%HN12U0.38L6R)`22(*33$T/2DS0B%;(D)@0"@B(4DY0F!(
[EMAIL PROTECTED](CTV,S4L1RHR(5LB0F!`*")@0"@B8$`\1C51/[EMAIL PROTECTED](A
-M-C,U+%HN1#E).R8U4SPF-4,N4$A`*")@0"@B8$`H)D5-/"9=4CTB(38S-2Q:
-M+D0Y23LF-5,\)C5#"DTN4$A`*")@0#\P25TB0$DG.3<Q3SPG,%HN1%%/.T8\
-M6BY$+4\[1CE).5<U4CDR0$<[1ET_.C8]3CM7*44*33=6+4$\5C1'*C-,*B)&
-M754\0F!$,R8E4STE-5`Y)B54.3)@[EMAIL PROTECTED](C!0+E!(*CQ7-4(H)D%!.T8Q
-M3`I-.35=1CHV444H)TPJ*")@0"@F55DH(C%//"<[EMAIL PROTECTED](U1`/%9!23E'
-M,%LB0F!`*"(A33XR8$0Y1D5,"DTY,F!`*")@[EMAIL PROTECTED]@Z-CE4*"[EMAIL 
PROTECTED],4DY
-M,F!",T8U13DB(48Z-E%%-R980BM"(54\5B5'.3)[EMAIL PROTECTED]
-M*29=53TF.4D[)C1`+S(A4SHF148](B%</R)@1RE33"HH(F!`*"(Q1CHV444H
-M(U1`/4954PI--U8M2#DV+4LW5EE!.S8T2"DF.4D[)C1)*"[EMAIL PROTECTED],3XS4B%%
-M/#)@1S5$53,I4TPJ*")@0"@F55DH(C%-"DT[5C%%*")@0"@C5$`J)RU4.#<P
-M2"DF.4D[)C1)*C5,4C<R8$8H(V!7+5,\5RY02"HH(F!`*"9=4#DV6$`*33LW
-M1$`I)CE(*R)@0B\B*$PH(C%&.C9112)"8$`H(F!`*")@0#M7*$`Y)EQ`/E(A
[EMAIL PROTECTED](BDC.U<U3`I-.2(A3CM7,$`[5R%%.T(A23M'(54](B%&[EMAIL PROTECTED]
-M,48Z-E%%+D)@1"@R*%LH)C58.C<P0"PB(5TN4$A`"DTH(F!`.S=$0"DG+50\
-M0F!=*"[EMAIL PROTECTED])EU#.#900"DB7%LH([EMAIL PROTECTED]")@0"A2
-M+$,[EMAIL PROTECTED])B5#.E-<[EMAIL PROTECTED])E59*"(Q3STW,5,])RA;(D)@0"@B(4DY
-M0D!`*29=4#TG+$TO1TU5/S)@20I-*"=,[EMAIL PROTECTED](F!`*"(A23E"0$`H,C%/
-M/3<Q1CHV444H(D1`/E!(0"@B8$`H(F!`*")@0"@B8$0[5S54"DTY1D5,.3)@
[EMAIL PROTECTED],48Z-E%%+E!(0"@B8$`H(F!`*")@0"@B8$0[5S54.49%3#DR8%T_0B%3
-M*U503CPF)4,*33I6-40W)TA/*U-,[EMAIL PROTECTED](F!`*"(A72)"8$`H(F!`*")@
-M0#LW1$`J(C%(.38E1"LB8$0X1EU$/C)$0`I-+S(A4SPF44D](F!/-U5=-34U
-M73\W)EA/*R)@1#Q7,5(N4$A`*")@0"@B8$`H)C%).3)@0C!6)4XI5S!`"DT]
[EMAIL PROTECTED])CE//$9513DB(40X-S%!*"[EMAIL PROTECTED]/$0Y1D5,.3(]/#M"
-M*"HH(F!`*")@0"@[EMAIL PROTECTED](Q2#DV)40N4$A`*")@0"@B8$`H
-M(C%//3<Q4STG*$`O,B%5.T<A03A63$`I5S1'*R)@1`I-.$9=1#XS3"HB0F!`
-M*"([EMAIL PROTECTED]/E!(0"@B8$`H(F!`*"(Q3STW,48Z-E%%*"=17"\R8$0Y
-M1D5,"DTY,F!.*"(\3CPF)4,Z5C5$*5-,*B)"8$`H(F!`*")@0#LW1$`I)E5%
-M*"-40#A&)5,Y-EE!.S8T2"DC8$D*32Y02"HH(F!`*")@0"@B8$0[5S54/%<Q
[EMAIL PROTECTED](U!",31=)C!$434T1"A"*")80#PF)4,Z4F!'/3(\3`I-*"(Q4STG
-M*%LB0BQ#*%(L0RA2+$,H4BQ#*%(L0RA2+$,H4BQ#*%(L0RA2+$,H4BQ#*%(L
-M0RA2+$,H4BQ#"DTH4BQ#*%(L0RA2+$,H4BQ#*%(L0RA2+$,H4BQ#*%(L0RA2
-M+$,H4BQ#*%(L0RA2+"HU)D%)/%(A23Q2([EMAIL PROTECTED]/C(A1CHV444H
-M)S%(.#<P0#U6)5,H)R%!.%9-13DB(5<Z-S%(*"<Q2#DR8$<]-S50.#8M2PI-
-M/29=3SLB65`[(CQ`/59!23A60"HZ-RQ`.C990SLG-40Y-C!`.C980#TF044H
-M)2%%/$900#DF15,])RE)"DTX1S54.C9=3BM`2"HU)EQ`/[EMAIL PROTECTED])S%(
-M.C<L0#E&14PY,B%5/%8T0#TF044H)CE/.R913SU614X*33E2(4,[5E5-.#99
-M1"Y`2"HH(F!`*")@1#LV-$`K-S1`*29=53TF.4D[)C1`*28Y23LF-"HB13%/
-M*"<I10I-.%<[EMAIL PROTECTED],44H)D54*"<U4SDR(50Z)C1`.49=3#LF75<Z-EE'*"8M
-M3SLV54$[1C!:(D!(0"@B8$`H(C%-"DTY,F!-/")@1#E&14PY,F!$.U<U5#E&
-M14PY,[EMAIL PROTECTED],%<[EMAIL 
PROTECTED],44Y(B%!/2(A8#Y535,X5B5,.#<H0#LF74,[EMAIL PROTECTED]
-M-E5%-S=4*BA2+$,H4BQ#*%(L0RA2+$,H4BQ#*%(L0RA2+$,H4BQ#*%(L0RA2
-M+$,H4BQ#*%(L0PI-*%(L0RA2+$,H4BQ#*%(L0RA2+$,H4BQ#*%(L0RA2+$,H
-M4BQ#*%(L0RA2+$,H4BQ#*%!)/S=5-34W55PJ"DTQ-%TF,$11-31$*"HH(F!`
-M*"=4*B)"8$`H(F!#*%(L0#M7-50\)S54*"<Q2#DR(48Z-E%%(D)@0"@B(4D*
-M33E"0$`I)EU0/2<L32]'3$<\4CU=*")$0#Y02$`H(F!`*")@0"@G(5(Z-EE4
-M*"4M-#$D734U(F!$.U<U5`I-/%<Q4BY02$`H(F!`/S(A13LG+44H)TPJ*")@
-M0"@B8$`H(F!$.U<U5#E&14PY,F!=*"4Y+3132%HQ1D5,"DTY-RU0.38L6BY'
-M.4T\5D5&/C)`1#M7-50Y1D5,.3)$0#HV.$`I)5DO*"[EMAIL PROTECTED]/38S-2Q'+E!(
-M0"@[EMAIL PROTECTED])R%2.C995"@B*3<[EMAIL PROTECTED],48Z-E%%*"9%3CTF
-M7$`I)EU5/28Y23LF-3P[0BA`.C8X0`I-*29=4#TG+$TO1TQ'/4(]72Y02$`H
-M(F!`*")@0"@F75`Y-EA`.S=$0"DF754])CE(*R)@0B]"*$PH(C%/"DT]-S%&
-M.C9112)"8$`H(F!`*")@0"@B8$`H)EU2*"[EMAIL PROTECTED])@0C!6754[
-M)C!`.T9=5"@F75`*33DV6$`I)EU5/28Y23LF-$`Y1EU2*"<]4CHW,4D[1CQ:
-M*"(P02A#3$`Y-T%)/2)@4"@G5%LB0F!`*")@0`I-*")@0#A&14X[-EU$.3)@
-M1#M7-50Y1D!;(D)@0"@B8$`H(F!`*%([EMAIL PROTECTED],4\]-S%3/2<H0#LV14<Z)S!`
-M"DTX1C1`.3954#TG1$PH)D5&*"<Q2#DR(48Z-E%%*"<]03Q2(44[-R%4/C!(
-M0"@B8$`H(F!`*"<[EMAIL PROTECTED],4\]-S%&.B)@1#M7-50\5S%2*"[EMAIL PROTECTED]
-M,4\]-S%3/2<H6R)"8$`H(F!`*")@0#A644\\5C1`*29=50I-/28Y2"Y02"HH
-M(F!`*")@0"@B(4,Z)E5/.2)@1#LV740Y,E!`*29=53TF.4D[)C1;(D)@0"@B
-M(5TB0$A`"DTH(F!`*%([EMAIL PROTECTED],44[)C54.3(A4SM7-5(X5C1`.49%3#DS7"HH
-M(F!`*"9%1BHB8$0[5R%4/%)47CY2/20*32E75$`X-EE$*"(Q1CHV444H)EE%
-M*"(Q3STW,48Z-E%%*")$0#Y02$`H(F!`*")@0"@C)$`]5D%).R8T0`I-/399
-M3#HV64LH(C%&.C9112Y02$`H(F!`/S!)72)`25,]-BA`.$<U3#I575`\1EU#
-M.3<[EMAIL PROTECTED]"HH(F!`"DTH)E59*"(Q3SPG,5,H(U1`/%9!23E',%LB0F!`*"(A
-M33XR8$0S-B5..C8Y13Q7,$`O,F!$.U<A5#Q25%X*33Y2/4TI5U1;(D!(0"@B
-M8$`[5R%%.T(A33XR8$0Y1D!,*"(H7"A"4$`I)%5!.T9%1CDW+50H)EU2*"8Q
-M20I-.3)@0C!6754[)C!`.T9=5"@F75`Y-EA`*5([EMAIL PROTECTED]/2(\6BDB
-M)$([EMAIL PROTECTED]")@0"@G(5(Z-EE4"DTH(BDR.38E1#HV64<H(C$M.#9923E&-5,]
-M)5%.*$!(0"@B8$`H(F!`*")@0"@B(4DY0F!$.U<A5#Q25%X*33Y2/58I5U1;
-M(D!(0"@B8$`[-T1`*28M3STV650H(U1`+"-,[EMAIL PROTECTED])E59*"(Q3#HV644\
-M4F!=*"[EMAIL PROTECTED](D)@0"@B(5<Z)D5,.3)`0#LW1$`I)E%).T8T0"\R8%PI)CE(
-M+T)@[EMAIL PROTECTED]"HH(F!`*")@0"@B(4,Z)EU-"DT\(F!$.R9%3CDS3"HH(F!`*")@
-M0"@B(4T^,F!(*28Y23LF-$DH(U1`/%<A3#HW,$`K55%3*E)<3"@B,4P*33HV
[EMAIL PROTECTED]")@0"@B8$`H(F!$.R9%3CDW+$LJ4TPJ(D)@0"@B8$`H(F!`.T8U
-M6#TB(54[1E%%/%<L0`I-*28Y23LF-$`O-UA`*U503CPF)4,Z5C5$*U-,*B)"
-M8$`H(F!`*")@0"DF+4\]-EE4*E),6R)`2$`H(F!`"DTH(F!`*"[EMAIL PROTECTED],4\]
-M-S!`+S)@1#E&14PY,TPJ*")@0"@B8$`H(F!$.U<U5"@C55XH)RQ/-R)[EMAIL PROTECTED]
-M+4L*33DV,3P^0EQ/+E!(0"@B8$`H(F!`*"(Q3STW,$`O,B%6.S<M/SA6044X
-M5DT_.T8E33DR0$0[5S54*C(A20I-.4)@1#=$7$`Y-R1`*54Y+312/%LB0$A`
-M*")@0"@B8$`H(BQ#*%(A53M'(4$X5DPJ*")@0"@B8$`H(B%)"DTY0D!`*#(Q
-M3SPG,5,K,UE;*58L1S\R8$DH)TPJ*")@0"@B8$`H(F!`*")@0"HB8$0[5S54
-M*R)@1#E&14P*33DR8$DH(U1`*B)@1#E&14PY,E!`*29=53TB8$DH)D5&*"(Q
-M3SPG,5,K,UE;[EMAIL PROTECTED]"HH(F!`*")@0`I-*")@0"@B8$`Z-CA`*B)[EMAIL 
PROTECTED]
-M,4\]-S!)*"=,[EMAIL PROTECTED](F!`*")@0"@B8$`H(F!`*"[EMAIL 
PROTECTED],4,Z)B5."DTY
-M5C5$*"-40"LT5$`W4TPJ*")@0"@B8$`H(F!`*")@0"@B8$`H)D5&*")`1#A6
-M04$[1CU%.2)@7"@B,[EMAIL PROTECTED]<[EMAIL PROTECTED])4XY(F!$.%9!03M&/44Y
-M(F!<*")[EMAIL PROTECTED],48Z-E%%*C(A6R)"8$`H(F!`*")@0`I-*")@0"@B8$`H(F!`
-M*")@0#PG*4D[1S!`*$4M2SHW(5`Z-EE'*"(\1#E&14PY,CQ`.#<L0"E2,4\]
-M-S!'"DTH)D53*"<U4"LW,4\K-C%!/28T3C<F6$(B0F!`*")@0"@B8$`H(F!`
-M*")@0"@B8$`H(F!`*")@0"@[EMAIL PROTECTED],4\\)S%3*S-96RE7.$<_,TPJ*")@
-M0"@B8$`H(F!`*")@0"@B8$`H(F!`*"(A3CDW050N4$A`*")@0`I-*")@0"@B
-M8$`H(F!`*")@0#\P2$`H(F!`*")@0"@B8$`H(B%=(D)@0"@B8$`H(F!`*")@
-M0"@F04$[1C%,"DTY-5U&.C9112HB,4\\)S%3*R)@1#E&14PY,E!`*29=53TB
-M1%LB0F!`*")@0"@B8$`H(F!`*"<[EMAIL PROTECTED],[5EE6.3<I5#DV,$`I
-M4C%&.C9112E2(50[4F!'*29=53TB/[EMAIL PROTECTED]")@0"@B8$`H(F!`*")@0`I-
-M*")@0"@F148H(C%//"<Q4RLS65LI5SA'/S-,*B)"8$`H(F!`*")@0"A2+$,H
-M)BU,[EMAIL PROTECTED]"DTH(F!`*")@0#\R(44[)RU%*"=,*B)"8$`H(F!`
-M*")@0"@B8$`H(BQ#*%(A1CHV444H)C58.C<M5#Q37"[EMAIL PROTECTED](F!`*")@
-M0"@B8$`]-EE,.3<M4RHB8$TY,F!$.U<U5"@B1$`^4$A`*")@0"@B8$`H(F!`
-M*")@0`I-*")@0#PG*4D[1S!`*$0Y23LF-$`I4C%&.C9112E2(5<X-RQ`.T9=
-M5"@G-4X\)B5#.E8U1"@F14X])EQ`"DTI4C%//3<P1RM"(2,X-EA`.T9=5"@G
-M*44[-EU6.3)9/#M"*%LB0$A`*")@0"@B8$`H(F!`*")@0RA2+$`*33Q&-4T[
-M5SE%*"9%5")"8$`H(F!`*")@0"@B8$`H)U1`.3914SDR(5LB0F!`*")@0"@B
-M8$`H(F!`*")@0`I-*"(A4#Q&14X](F!"-$8U33M7.4D[1CQ`*5(Q3STW,$<W
-M)EA"+E!(0"@B8$`H(F!`*")@0"@B8$`H(F!`"DTL,B%7.B9%3#DR(54[1E%)
-M.T9,0"DF754](TPJ*")@0"@B8$`H(F!`*")@0#\P2$`H(F!`*")@0"@G5"H*
[EMAIL PROTECTED])U0J*")@0"@G(5(Z-EE4*"(I)CM7-4XY(F!$.%9=53M',$`Y1D5,
-M.3<L0#TF7$`\)RE/.%8U4PI-/%(A3STW,$`[5CA`*29123M&-5,H)D5.*"(\
-M1#,V)4XZ-CE%/%<P1S<F6$(B0F!`*")@0"@B8$`H(F!`"DTH)D5&*"(Q3SPG
-M,5,K,UE;*5<X1S\S3"H_,[EMAIL PROTECTED]/%<[EMAIL PROTECTED],X-CU%*"=,[EMAIL 
PROTECTED])RE%/2<U
-M4CM"(5$*33PU3"[EMAIL PROTECTED],3XV(F!$+"(A.RLV,$`Y)D52-S(A.RLW
-M.3TH)4Q-.%540#92520W,F!-/"=030I-/3(A.SM7*4DY4B$[/"8E0SI6-40_
-M(E53-S(A7"@B54TH)4U-.#9923E&-5,])54](D!(0"@B8$`R)B5."DTY)E%%
-M*"8I23M&)5(^,B%&.C9113Q2(4D[0B%3.U<U4CA6-$`])RE%.3)80#!6)4XH
-M)BE%*"<U4SDV,$`*33TF7$`\)B5#.E(A3SQ`2$`H(F!`/[EMAIL PROTECTED])CE)
[EMAIL PROTECTED])D56.C8Q23TV)4P[)T1`.U<H0`I-.#<L0#Q7(44X5D5&.C8U
-M1"@F*5DH)B1`.S8E3CHV.44\5S!`.49%3#DR6"HB1%U0/29%3SM'+%HB0F!`
-M"DTH(F!-/3)@0#4V65`X-BU+*"8Y23LF-5,H(D%$.38Y03TV450\4B%4.U)@
-M33TR(54[1E%%/%<L0"LW8$`*33HW+$`\5R%%.%9%1CHV-40J,$A`*")@0"LW
-M8$`H)2%!.%9,0#E&14PY-RPJ*")@0"@B54,H(B$C.R8U00I-.T(A53PB(4$[
-M)E!`/[EMAIL PROTECTED])$5-/"9123DW+$`K-E0J(D)@0"@B
-M8$TQ(F!`"DTQ)C5,.3<[EMAIL PROTECTED](A1CHV444H)B5&/[EMAIL PROTECTED]
-M5EU$.C991RM6,44X5EU$.C991R)[EMAIL PROTECTED]"1=53TG(54](B%4
-M.U(A,S4D,2\U-3!`/$8E5#HF-5(H)S%(.#980#-5-30T)34T-U0Y*0I-,R0T
[EMAIL PROTECTED](E5-*"(A-3Q6-$`[-B5..C8Y13Q7,$`Y1D5,.3)00#HV.$`[1EU.
-M.3(A23Q2(44^)R%,"DTZ-BU)/[EMAIL PROTECTED](5([5SE).28U1"@F,44Y1B55.R<Q
[EMAIL PROTECTED],4\H(CTM,#19*3%$-3,U(CPJ(D)@0"@[EMAIL PROTECTED]
-M,4D\1C5#/29=4CXR(50[4B%$.C<H0#A&-48[5RE%*"<A4CM6+44\5RU).T8\
[EMAIL PROTECTED](D)@0"@B8$T]0F!`-$<[EMAIL PROTECTED]//%8U3#XP2$`H(F!`*S9`0"@D
-M,4D\5R%,.#=$0#TF04D\4B%("DTY-E%0*"9513Q7+4$Y5C0J-S-,*C\P2"H\
-M5S5"*"<Y33Q574,Z)[EMAIL PROTECTED])TPJ(D(L0#0F)4,*33I6-40H)CE)
[EMAIL PROTECTED],44[1C!`/29<0#HF)58Y,B%-/3915#HW(4PY,B%$.U<Q4RLB(5<Z
-M)D5#.B(A5`I-.B8T0#!5*30S(B%-.#=$0#M7*$`[-B59*"993STB([EMAIL PROTECTED]
-M.R8T*BA2(5`\1EU0.3<I3#XR4$`\5EQ`"DTX5EU./48U4CTB(50[4B%..#<Q
-M23U&-$`Y1EU2.S8E5"M"8$`P-EE$*"8Q13PF-4XY)D5..5(A3SM"([EMAIL PROTECTED]
-M/$`])D%%*"8E4CA604D]1C1`/58E4R)"+$`]-EE0.#8M2SDV,$PH)CE/.U)9
[EMAIL PROTECTED]:*"9500I-/C(A0CDR(48[5ET_.$8E4BM&*4$^0B%//$(A1CM6
-M7$XX1B52-U8I03Y"6$`H)%A.,$)80#4F04D\4B%#"DTZ)C5#.E<L0#E&75(B
-M0BQ`.3=!23Q7,44[1BU%*R(A4SM2(4D\4B%..U<P0#Q7-4D])B5"[EMAIL PROTECTED]
-M+$T*33HW+$`])EQ`.58U3CDW*4$])C1`,U0Q,RLS*$T\5B5&.3([EMAIL PROTECTED]
-M4B%).T(A4#Q&-5`X-RE!/29%3PI-.T!([EMAIL PROTECTED]&[EMAIL PROTECTED](Y-B54
-M.C9=3BM`2"HH(F!`*"[EMAIL PROTECTED],48Z-E%%*"-40#Q604DY1S!;"DTB0$A`*")@
-M0"DF.4D[)C1`+S(A-C,U+%HN1#E).R8U4SPF-4,N0TE6.S<M23E'[EMAIL PROTECTED])CE)
[EMAIL PROTECTED]/3<[EMAIL PROTECTED],48Z-E%%*"[EMAIL PROTECTED](C%&.C91
-M12Y02"HH(F!`*"[EMAIL PROTECTED],*R(Q1`I-.C<I4RLB,4(X-RU%*C)@[EMAIL PROTECTED]
-M.4D[)C1:+D4M4#DV+$TO1RU0.R9%5#PF)50Z(D!$.49%3#DR1%LB0F!`"DTH
-M(B%-/C)@1#TF55`H(U1`*28I03Q6-%LB0F!`*")@[EMAIL PROTECTED]/[EMAIL 
PROTECTED]"(Q5#LW
-M8$`O-UA`/%)<2#9563P*32M%5$LJ-5!.*B)82S<B6$XJ4D1/*2,E/RDC*$\N
-M4$A`*")@0#LW1$`I)S%2/C)@[EMAIL PROTECTED])C1:+D4M4`I-.38L32]&+4$])R%!
-M/29`2"DG.4\[(E!`*28Q23Q'+$PH([EMAIL PROTECTED](F!`/$8U5#TW*4XH
-M(C%4"DT\1T1`.C8X0"LV-$`I)S%2/C-,*B)"8$`H(F!$/2954"@C5$`I)BE!
-M/%8T6R)"8$`H(F!1*"<[EMAIL PROTECTED],[EMAIL PROTECTED])8
-M2RHU4$XJ)4T^-R)9/2I21$\I(R4_*2,H3RY02$`H(F!`*2<[EMAIL PROTECTED]/C)@[EMAIL 
PROTECTED]
-M.4D[)C1:+D4M4#DV+$TO1BU!/2<[EMAIL PROTECTED])SE/.R)00"DF,4D\1RQ,*"(Q
-M5#LW8$DN4$A`"DTH(F!`/$8U5#TW*4XH(C%4/$=$0#HV.$`K-C1`*2<Q4CXS
-M3"HB0F!`*"(A4CDW,54\1EA`*28Y23LF-%L*32)'5"HB1E59*"(Q3SPG,5,H
-M(U1`/E=46R)$/44])%U0/29%3SM'[EMAIL PROTECTED])EU0/2<L3"E7-$<K(CU0*5)01PI-
-M.%(\3"@B/20I4E!`*5946CQ2/$PI5RQ'*R(]1"\W+$<K(CU6*5)01SHB/$DN
[EMAIL PROTECTED]@B*2,X-EA'"DT]([EMAIL PROTECTED])4XY(B%5.T<A03A63$`X-S!`
-M/[EMAIL PROTECTED]/29%33DR)3P[0BA,*"<[EMAIL PROTECTED]/44*32HB1"HH(F!`*"9%
[EMAIL PROTECTED],4\\)S%3*S-96RE7-$<_,F!&*4)@1#M7(50\4E1>/E(]4"E75%LB1C%)
-M.3(A50I-/%8E1SDR0$DH)D5&*"(Q3SPG,5,K,UE;*59`1S\S3"HB1D5&*")`
-M0"DF75`])RQ-+T=,1SDB/5TH(D1`"DT^4$A`*")@0#A6040Z-RA`*29=4#TG
-M+$TO1TQ'.2(]72)"8$`H(F!`*")@0#M7*$`Y)D5%*"(I)[EMAIL PROTECTED],$`]
-M)EQ`.%9!1#HW*$`])EQ`*5(Q3SPG,5,K,UE;*58P1S\R/%HI(B1"+E!)72)"
-M,4\\)S%3*S-96PI-*5<T1S\R8%TH(R1`.C8X0"@R,4\\)S%3*S-96RE78$<_
-M,TPJ.$9%3CLV740Y,B$S-20Q+S4U,$`Z-CA`"DTI)EU0/2<L32]'3$<\4CU=
-M+E!)23E"[EMAIL PROTECTED])C58.C<M5#Q28$0[5R%4/%)47CY2/4TI5U1`.U<H0#DW04D*
-M33Q7,5,H(C%//"<Q4RLS65LI5BQ'/S)@[EMAIL PROTECTED]"HH(F!`*"(Q3SPG,5,K,UE;
-M*5941S\R(5P_(U1`*$15(0I-,T1%)C$U+30H0TPJ*")@0"@F*54[)DT_/"<I
-M3SA6-5,\4D!$.U<A5#Q21%LB0F!`*"(A13XF150J(V!)"DTN4$E=*"8U3#Q6
-M-$`^4$A`*")@0#HV.$`J)"$A-$0]-BHR(5LB0F!`*")@0"@B8$`Z)B5..291
[EMAIL PROTECTED])EU0/2<L3"@D(2$T1#TV*C-,[EMAIL PROTECTED])U1`.3914SDR
-M(5LB0F!`*")@0"@B8$`Y)D5%*"([EMAIL PROTECTED](A1CHV444H)S%/*"<A4CM6+44\
-M5RQ`/%<A13A6148Z-C5$*#513BA"4$`]-RU!.58T2"HS3"HH(F!`"D$H)U0J
-I*")@0"@[EMAIL PROTECTED](+")$6R)'5"HB0$E$.C8T0#TW+4$Y5C1(*C-,[EMAIL PROTECTED]
[EMAIL PROTECTED]

==== //depot/maint-5.10/perl/lib/NEXT.pm#2 (text) ====
Index: perl/lib/NEXT.pm
--- perl/lib/NEXT.pm#1~32694~   2007-12-22 01:23:09.000000000 -0800
+++ perl/lib/NEXT.pm    2008-05-28 08:54:22.000000000 -0700
@@ -1,7 +1,8 @@
 package NEXT;
-$VERSION = '0.60_01';
+$VERSION = '0.60_02';
 use Carp;
 use strict;
+use overload ();
 
 sub NEXT::ELSEWHERE::ancestors
 {
@@ -42,11 +43,13 @@
        croak "Can't call $wanted from $caller"
                unless $caller_method eq $wanted_method;
 
-       local ($NEXT::NEXT{$self,$wanted_method}, $NEXT::SEEN) =
-             ($NEXT::NEXT{$self,$wanted_method}, $NEXT::SEEN);
+       my $key = ref $self && overload::Overloaded($self)
+           ? overload::StrVal($self) : $self;
 
+       local ($NEXT::NEXT{$key,$wanted_method}, $NEXT::SEEN) =
+             ($NEXT::NEXT{$key,$wanted_method}, $NEXT::SEEN);
 
-       unless ($NEXT::NEXT{$self,$wanted_method}) {
+       unless ($NEXT::NEXT{$key,$wanted_method}) {
                my @forebears =
                        NEXT::ELSEWHERE::ancestors ref $self || $self,
                                                   $wanted_class;
@@ -54,19 +57,19 @@
                        last if shift @forebears eq $caller_class
                }
                no strict 'refs';
-               @{$NEXT::NEXT{$self,$wanted_method}} = 
+               @{$NEXT::NEXT{$key,$wanted_method}} = 
                        map { *{"${_}::$caller_method"}{CODE}||() } @forebears
                                unless $wanted_method eq 'AUTOLOAD';
-               @{$NEXT::NEXT{$self,$wanted_method}} = 
+               @{$NEXT::NEXT{$key,$wanted_method}} = 
                        map { (*{"${_}::AUTOLOAD"}{CODE}) ? "${_}::AUTOLOAD" : 
()} @forebears
-                               unless @{$NEXT::NEXT{$self,$wanted_method}||[]};
-               $NEXT::SEEN->{$self,*{$caller}{CODE}}++;
+                               unless @{$NEXT::NEXT{$key,$wanted_method}||[]};
+               $NEXT::SEEN->{$key,*{$caller}{CODE}}++;
        }
-       my $call_method = shift @{$NEXT::NEXT{$self,$wanted_method}};
+       my $call_method = shift @{$NEXT::NEXT{$key,$wanted_method}};
        while ($wanted_class =~ /^NEXT\b.*\b(UNSEEN|DISTINCT)\b/
               && defined $call_method
-              && $NEXT::SEEN->{$self,$call_method}++) {
-               $call_method = shift @{$NEXT::NEXT{$self,$wanted_method}};
+              && $NEXT::SEEN->{$key,$call_method}++) {
+               $call_method = shift @{$NEXT::NEXT{$key,$wanted_method}};
        }
        unless (defined $call_method) {
                return unless $wanted_class =~ /^NEXT:.*:ACTUAL/;
@@ -103,11 +106,14 @@
        undef $EVERY::AUTOLOAD;
        my ($wanted_class, $wanted_method) = $wanted =~ m{(.*)::(.*)}g;
 
-       local $NEXT::ALREADY_IN_EVERY{$self,$wanted_method} =
-             $NEXT::ALREADY_IN_EVERY{$self,$wanted_method};
+       my $key = ref($self) && overload::Overloaded($self)
+           ? overload::StrVal($self) : $self;
+
+       local $NEXT::ALREADY_IN_EVERY{$key,$wanted_method} =
+             $NEXT::ALREADY_IN_EVERY{$key,$wanted_method};
+
+       return if $NEXT::ALREADY_IN_EVERY{$key,$wanted_method}++;
 
-       return if $NEXT::ALREADY_IN_EVERY{$self,$wanted_method}++;
-       
        my @forebears = NEXT::ELSEWHERE::ordered_ancestors ref $self || $self,
                                                           $wanted_class;
        @forebears = reverse @forebears if $wanted_class =~ /\bLAST\b/;

==== //depot/maint-5.10/perl/lib/NEXT/t/stringify.t#1 (text) ====
Index: perl/lib/NEXT/t/stringify.t
--- /dev/null   2008-05-07 15:08:24.549929899 -0700
+++ perl/lib/NEXT/t/stringify.t 2008-05-28 08:54:22.000000000 -0700
@@ -0,0 +1,35 @@
+use warnings;
+use strict;
+use Test::More tests => 2;
+
+BEGIN {
+    if ($ENV{PERL_CORE}) {
+        chdir('t') if -d 't';
+        @INC = qw(../lib);
+    }
+}
+
+BEGIN { use_ok('NEXT') };
+
+
+package Foo;
+
+use overload '""' => 'stringify';
+
+use constant BAR => (1..5);
+
+sub new { bless {}, shift }
+
+sub stringify {
+    my $self = shift;
+    my %result = $self->EVERY::LAST::BAR;
+    join '-' => @{ $result{'Foo::BAR'} };
+}
+
+
+
+package main;
+
+my $foo = Foo->new;
+is("$foo", '1-2-3-4-5', 'overloading stringification');
+

==== //depot/maint-5.10/perl/mad/t/p55.t#2 (text) ====
Index: perl/mad/t/p55.t
--- perl/mad/t/p55.t#1~32694~   2007-12-22 01:23:09.000000000 -0800
+++ perl/mad/t/p55.t    2008-05-28 08:54:22.000000000 -0700
@@ -64,10 +64,6 @@
 our %failing = map { $_, 1 } qw|
 ../t/comp/require.t
 
-../t/op/array.t
-../t/op/local.t
-../t/op/substr.t
-
 ../t/comp/parser.t
 
 ../t/op/switch.t
@@ -76,10 +72,33 @@
 
 ../t/op/symbolcache.t
 
-../t/op/threads.t
-
 ../t/op/exec.t
 ../t/io/say.t
+
+../t/io/open.t
+../t/op/gv.t
+../t/op/re.t
+../t/op/tr.t
+../t/op/die.t
+../t/op/pat.t
+../t/op/reg_namedcapture.t
+../t/op/reg_email.t
+../t/op/reg_nc_tie.t
+../t/op/utf8decode.t
+../t/op/state.t
+../t/op/subst.t
+../t/op/goto.t
+../t/op/tiehandle.t
+../t/op/pack.t
+../t/op/each_array.t
+../t/op/sprintf.t
+../t/op/attrs.t
+../t/op/universal.t
+../t/op/regexp.t
+../t/lib/cygwin.t
+../t/run/switchd.t
+../t/comp/proto.t
+../t/win32/system.t
 |;
 
 my @files;
@@ -149,10 +168,10 @@
 sub PerlIO::F_UTF8 () { 0x00008000 } # from perliol.h
 BEGIN { PerlIO::Layer->find("encoding",1);}
 ########
-# TODO from ../t/op/array.t
+# from ../t/op/array.t
 $[ = 1
 ########
-# TODO from t/comp/parser.t
+# from t/comp/parser.t
 $x = 1 for ($[) = 0;
 ########
 # from t/op/getppid.t

==== //depot/maint-5.10/perl/malloc.c#4 (text) ====
Index: perl/malloc.c
--- perl/malloc.c#3~33942~      2008-05-27 18:21:26.000000000 -0700
+++ perl/malloc.c       2008-05-28 08:54:22.000000000 -0700
@@ -2445,6 +2445,8 @@
                buf->bucket_available_size[i] = BUCKET_SIZE_REAL(i);
            }
        }
+#else /* defined DEBUGGING_MSTATS */
+       PerlIO_printf(Perl_error_log, "perl not compiled with 
DEBUGGING_MSTATS\n");
 #endif /* defined DEBUGGING_MSTATS */
        return 0;               /* XXX unused */
 }
@@ -2516,6 +2518,8 @@
                      buffer.total_sbrk, buffer.sbrks, buffer.sbrk_good,
                      buffer.sbrk_slack, buffer.start_slack,
                      buffer.total_chain, buffer.sbrked_remains);
+#else /* DEBUGGING_MSTATS */
+       PerlIO_printf(Perl_error_log, "%s: perl not compiled with 
DEBUGGING_MSTATS\n",s);
 #endif /* DEBUGGING_MSTATS */
 }
 

==== //depot/maint-5.10/perl/mg.c#8 (text) ====
Index: perl/mg.c
--- perl/mg.c#7~33802~  2008-05-10 07:15:40.000000000 -0700
+++ perl/mg.c   2008-05-28 08:54:22.000000000 -0700
@@ -119,16 +119,21 @@
 {
     const MAGIC* mg;
     PERL_UNUSED_CONTEXT;
-    for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
-       const MGVTBL* const vtbl = mg->mg_virtual;
-       if (vtbl) {
-           if (vtbl->svt_get && !(mg->mg_flags & MGf_GSKIP))
-               SvGMAGICAL_on(sv);
-           if (vtbl->svt_set)
-               SvSMAGICAL_on(sv);
-           if (!(SvFLAGS(sv) & (SVs_GMG|SVs_SMG)) || vtbl->svt_clear)
-               SvRMAGICAL_on(sv);
-       }
+    if ((mg = SvMAGIC(sv))) {
+       SvRMAGICAL_off(sv);
+       do {
+           const MGVTBL* const vtbl = mg->mg_virtual;
+           if (vtbl) {
+               if (vtbl->svt_get && !(mg->mg_flags & MGf_GSKIP))
+                   SvGMAGICAL_on(sv);
+               if (vtbl->svt_set)
+                   SvSMAGICAL_on(sv);
+               if (vtbl->svt_clear)
+                   SvRMAGICAL_on(sv);
+           }
+       } while ((mg = mg->mg_moremagic));
+       if (!(SvFLAGS(sv) & (SVs_GMG|SVs_SMG)))
+           SvRMAGICAL_on(sv);
     }
 }
 

==== //depot/maint-5.10/perl/op.c#12 (text) ====
Index: perl/op.c
--- perl/op.c#11~33942~ 2008-05-27 18:21:26.000000000 -0700
+++ perl/op.c   2008-05-28 08:54:22.000000000 -0700
@@ -4206,10 +4206,11 @@
        if (PL_eval_start)
            PL_eval_start = 0;
        else {
-           /* FIXME for MAD */
-           op_free(o);
-           o = newSVOP(OP_CONST, 0, newSViv(CopARYBASE_get(&PL_compiling)));
-           o->op_private |= OPpCONST_ARYBASE;
+           if (!PL_madskills) { /* assignment to $[ is ignored when making a 
mad dump */
+               op_free(o);
+               o = newSVOP(OP_CONST, 0, 
newSViv(CopARYBASE_get(&PL_compiling)));
+               o->op_private |= OPpCONST_ARYBASE;
+           }
        }
     }
     return o;

==== //depot/maint-5.10/perl/pp_hot.c#13 (text) ====
Index: perl/pp_hot.c
--- perl/pp_hot.c#12~33889~     2008-05-20 10:02:15.000000000 -0700
+++ perl/pp_hot.c       2008-05-28 08:54:22.000000000 -0700
@@ -815,8 +815,6 @@
 {
     dVAR; dSP; dTOPss;
     const I32 gimme = GIMME_V;
-    static const char return_array_to_lvalue_scalar[] = "Can't return array to 
lvalue scalar context";
-    static const char return_hash_to_lvalue_scalar[] = "Can't return hash to 
lvalue scalar context";
     static const char an_array[] = "an ARRAY";
     static const char a_hash[] = "a HASH";
     const bool is_pp_rv2av = PL_op->op_type == OP_RV2AV;
@@ -835,8 +833,7 @@
        }
        else if (LVRET) {
            if (gimme != G_ARRAY)
-               Perl_croak(aTHX_ is_pp_rv2av ? return_array_to_lvalue_scalar
-                          : return_hash_to_lvalue_scalar);
+               goto croak_cant_return;
            SETs(sv);
            RETURN;
        }
@@ -852,9 +849,7 @@
            }
            else if (LVRET) {
                if (gimme != G_ARRAY)
-                   Perl_croak(aTHX_
-                              is_pp_rv2av ? return_array_to_lvalue_scalar
-                              : return_hash_to_lvalue_scalar);
+                   goto croak_cant_return;
                SETs(sv);
                RETURN;
            }
@@ -885,9 +880,7 @@
            }
            else if (LVRET) {
                if (gimme != G_ARRAY)
-                   Perl_croak(aTHX_
-                              is_pp_rv2av ? return_array_to_lvalue_scalar
-                              : return_hash_to_lvalue_scalar);
+                   goto croak_cant_return;
                SETs(sv);
                RETURN;
            }
@@ -937,6 +930,11 @@
     }
     }
     RETURN;
+
+ croak_cant_return:
+    Perl_croak(aTHX_ "Can't return %s to lvalue scalar context",
+              is_pp_rv2av ? "array" : "hash");
+    RETURN;
 }
 
 STATIC void

==== //depot/maint-5.10/perl/t/op/switch.t#2 (text) ====
Index: perl/t/op/switch.t
--- perl/t/op/switch.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/switch.t  2008-05-28 08:54:22.000000000 -0700
@@ -8,7 +8,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 108;
+use Test::More tests => 111;
 
 # The behaviour of the feature pragma should be tested by lib/switch.t
 # using the tests in t/lib/switch/*. This file tests the behaviour of
@@ -519,6 +519,68 @@
     ok($ok, '((1 == $ok) || "foo") smartmatched');
 }
 
+TODO: {
+    local $TODO = "RT #50538: when( [EMAIL PROTECTED] && \%n ) fails to smart 
match";
+    { # this should smart match on each side of &&
+       my @n = qw(fred barney betty);
+       my @m = @n;
+       
+       my $ok = 0;
+       given( "fred" ) {
+       when( @n ) {
+               $ok++; continue;
+       }
+       when( @m ) {
+               $ok++; continue;
+       }
+       when( @m && @n ) {
+               $ok++;
+       }
+       }
+
+       is($ok, 3, '(@n && @m) smart-matched'); 
+    }
+
+    { # this should smart match on each side of &&
+       my @n = qw(fred barney betty);
+       my %n = map { $_, 1 } @n;
+       
+       my $ok = 0;
+       given( "fred" ) {
+       when( @n ) {
+               $ok++; continue;
+       }
+       when( %n ) {
+               $ok++; continue;
+       }
+       when( @n && %n ) {
+               $ok++;
+       }
+       }
+
+       is($ok, 3, '(@n && %n) smart-matched'); 
+    }
+
+    { # this should smart match on each side of &&
+       my %n = map { $_, 1 } qw(fred barney betty);
+       my %m = %n;
+       
+       my $ok = 0;
+       given( "fred" ) {
+       when( %m ) {
+               $ok++; continue;
+       }
+       when( %n ) {
+               $ok++; continue;
+       }
+       when( %m && %n ) {
+               $ok++;
+       }
+       }
+
+       is($ok, 3, '(%m && %n) smart-matched'); 
+    }
+}
 
 # Make sure we aren't invoking the get-magic more than once
 
@@ -689,7 +751,7 @@
                q{Can't "break" in a loop topicalizer});
        }
        when (1) {
-           is($first, 1, "Lecical loop: first");
+           is($first, 1, "Lexical loop: first");
            $first = 0;
            # Implicit break is okay
        }

==== //depot/maint-5.10/perl/t/op/tr.t#2 (xtext) ====
Index: perl/t/op/tr.t
--- perl/t/op/tr.t#1~32694~     2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/tr.t      2008-05-28 08:54:22.000000000 -0700
@@ -6,7 +6,7 @@
     require './test.pl';
 }
 
-plan tests => 117;
+plan tests => 118;
 
 my $Is_EBCDIC = (ord('i') == 0x89 & ord('J') == 0xd1);
 
@@ -461,3 +461,10 @@
     is($c, "\x20\x30\x40\x50\x60", "tr/\\x00-\\x1f//d");
 }
 
+($s) = keys %{{pie => 3}};
+my $wasro = Internals::SvREADONLY($s);
+{
+    $wasro or local $TODO = "didn't have a COW";
+    $s =~ tr/i//;
+    ok( Internals::SvREADONLY($s), "count-only tr doesn't deCOW COWs" );
+}
End of Patch.

Reply via email to