-Dmad works, albeit with some test failures:
Nicholas Clark [Thu, 9 Mar 2006 21:24:04 +0000 (21:24 +0000)]
ext/B/t/f_sort.t                       20    5  25.00%  2 4-6 16
ext/B/t/optree_samples.t               20    1   5.00%  18
ext/List/Util/t/weak.t      1   256    22    1   4.55%  22
ext/Safe/t/safeops.t        0   134   354  288  81.36%  211-354
lib/warnings.t                        561    2   0.36%  3 10

p4raw-id: //depot/perl@27450

toke.c

diff --git a/toke.c b/toke.c
index bcd9592..d87f7da 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -993,7 +993,11 @@ S_skipspace(pTHX_ register char *s)
 
            /* reset variables for next time we lex */
            PL_oldoldbufptr = PL_oldbufptr = PL_bufptr = s = PL_linestart
-               = SvPVX(PL_linestr);
+               = SvPVX(PL_linestr)
+#ifdef PERL_MAD
+               + curoff
+#endif
+               ;
            PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
            PL_last_lop = PL_last_uni = NULL;
 
@@ -3104,12 +3108,12 @@ Perl_yylex(pTHX)
               "### Saw case modifier\n"); });
            s = PL_bufptr + 1;
            if (s[1] == '\\' && s[2] == 'E') {
-               PL_bufptr = s + 3;
 #ifdef PERL_MAD
                if (!thiswhite)
                    thiswhite = newSVpvn("",0);
                sv_catpvn(thiswhite, PL_bufptr, 4);
 #endif
+               PL_bufptr = s + 3;
                PL_lex_state = LEX_INTERPCONCAT;
                return yylex();
            }
@@ -4109,7 +4113,7 @@ Perl_yylex(pTHX)
                start_force(curforce);
                NEXTVAL_NEXTTOKE.opval = attrs;
                CURMAD('_', nextwhite);
-       force_next(THING);
+               force_next(THING);
            }
 #ifdef PERL_MAD
            if (PL_madskills) {