From: Radu Greab Date: Wed, 27 Jun 2001 21:50:52 +0000 (+0300) Subject: Re: Bug report: split splits on wrong pattern X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=16bdb4acd34944ffe721cad7161ffc4c81e35c48;p=p5sagit%2Fp5-mst-13.2.git Re: Bug report: split splits on wrong pattern Message-ID: <15162.11020.279064.471031@ix.netsoft.ro> p4raw-id: //depot/perl@11029 --- diff --git a/pp_ctl.c b/pp_ctl.c index 24dfc26..4970bd0 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -147,8 +147,11 @@ PP(pp_regcomp) if (!PM_GETRE(pm)->prelen && PL_curpm) pm = PL_curpm; - else if (strEQ("\\s+", PM_GETRE(pm)->precomp)) - pm->op_pmflags |= PMf_WHITE; + else + if (strEQ("\\s+", PM_GETRE(pm)->precomp)) + pm->op_pmflags |= PMf_WHITE; + else + pm->op_pmflags &= ~PMf_WHITE; /* XXX runtime compiled output needs to move to the pad */ if (pm->op_pmflags & PMf_KEEP) { diff --git a/t/op/split.t b/t/op/split.t index 8aa91e5..170dfe8 100755 --- a/t/op/split.t +++ b/t/op/split.t @@ -5,7 +5,7 @@ BEGIN { @INC = '../lib'; } -print "1..44\n"; +print "1..45\n"; $FS = ':'; @@ -244,3 +244,13 @@ print "ok 32\n"; print "ok 44\n"; } +{ + # check that PMf_WHITE is cleared after \s+ is used + # reported in <20010627113312.RWGY6087.viemta06@localhost> + my $r; + foreach my $pat ( qr/\s+/, qr/ll/ ) { + $r = join ':' => split($pat, "hello cruel world"); + } + print "not " unless $r eq "he:o cruel world"; + print "ok 45\n"; +}