make intuit_start() handle mixed utf8-ness
authorDavid Mitchell <davem@iabyn.com>
Tue, 18 Jun 2013 11:29:16 +0000 (12:29 +0100)
committerDavid Mitchell <davem@iabyn.com>
Sun, 28 Jul 2013 09:33:35 +0000 (10:33 +0100)
commit2c75e3628bc433543b3e475c87a64fb9e8d79871
treefe909b5748281c5d562108432d188797be4359de
parentf8a6dd2e91670031e094529649fe2380f2ee6854
make intuit_start() handle mixed utf8-ness

Fix a bug in intuit_start() that makes it fail when the utf8-ness of the
string and pattern differ. This was mostly masked, since pp_match() skips
calling intuit in this case (and has done since 2000, presumably as a
workaround for this issue, and possibly for other issues since fixed).
But pp_subst() didn't skip, so code like this would fail:

    $c = "\x{c0}";
    utf8::upgrade($c);
    print "ok\n" if $c =~ s/\xC0{1,2}$/\xC0/i;

Now that intuit is (hopefully) fixed, also remove the guard in pp_match().
pp_hot.c
regexec.c