re_intuit_start(): fix byte/char calculation err
authorDavid Mitchell <davem@iabyn.com>
Sat, 15 Mar 2014 14:27:47 +0000 (14:27 +0000)
committerDavid Mitchell <davem@iabyn.com>
Sun, 16 Mar 2014 18:03:50 +0000 (18:03 +0000)
commit000dfd2d23e52925b97fdb70c3a45e996df1ff2e
tree8984c3a7a9837fff065fffe81db1352266ab1983
parentc43b55202cde0bd54e79e98bc90ceaecb135c151
re_intuit_start(): fix byte/char calculation err

On failure to find stclass in float range, it currently does:

    rx_origin = check_at - start_shift;

which should instead be

    rx_origin = HOP3c(check_at, - start_shift, strbeg);

The second added test is an example of when this causes a false negative.
(The first test is just the analogue without a UTF8 string, so it already
passes).

Since we actually already calculate this value earlier as part of
determining endpos in the float case, assign the result of that calc to a
local var, then just reuse it.
regexec.c
t/re/re_tests