summaryrefslogtreecommitdiff
path: root/regexec.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2013-07-30 23:49:58 -0700
committerFather Chrysostomos <sprout@cpan.org>2013-08-25 12:23:59 -0700
commit49f55535e0b402f8cbdf839b5f2c88306c91a31d (patch)
tree53d85774d91296f9ee177a27425e7be58dcf2dd7 /regexec.c
parenta10eae290937db109954431d254a9a25287f190b (diff)
downloadperl-49f55535e0b402f8cbdf839b5f2c88306c91a31d.tar.gz
Stop substr re optimisation from rejecting long strs
Using I32 for the fields that record information about the location of a fixed string that must be found for a regular expression to match can result in match failures, because I32 is not large enough to store offsets >= 2**31. SSize_t is appropriate, since it is 64 bits on 64-bit platforms and 32 bits on 32-bit platforms. This commit changes enough instances of I32 to SSize_t to get the added test passing and suppress compiler warnings. A later commit will change many more.
Diffstat (limited to 'regexec.c')
-rw-r--r--regexec.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/regexec.c b/regexec.c
index 29991b5820..eaabe8c896 100644
--- a/regexec.c
+++ b/regexec.c
@@ -615,7 +615,7 @@ Perl_re_intuit_start(pTHX_
{
dVAR;
struct regexp *const prog = ReANY(rx);
- I32 start_shift = 0;
+ SSize_t start_shift = 0;
/* Should be nonnegative! */
I32 end_shift = 0;
char *s;
@@ -751,7 +751,7 @@ Perl_re_intuit_start(pTHX_
the "check" substring in the region corrected by start/end_shift. */
{
- I32 srch_start_shift = start_shift;
+ SSize_t srch_start_shift = start_shift;
I32 srch_end_shift = end_shift;
U8* start_point;
U8* end_point;