com php-src: Better fix: ext/standard/string.c ext/standard/tests/strings/strrpos.phpt ext/standard/tests/stri ngs/strrpos_negative_offset.phpt

From: Date: Mon, 19 Jan 2015 02:38:25 +0000
Subject: com php-src: Better fix: ext/standard/string.c ext/standard/tests/strings/strrpos.phpt ext/standard/tests/stri ngs/strrpos_negative_offset.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-84162@lists.php.net to get a copy of this message
Commit: 0706032b7344ee3be3e95911e18966b3d97bfe39 Author: Xinchen Hui <laruence@php.net> Sun, 18 Jan 2015 21:38:25 -0500 Parents: 0be3626ec646fd59bbfb2ed2b3b436f265dd8f1e Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=0706032b7344ee3be3e95911e18966b3d97bfe39 Log: Better fix Changed paths: M ext/standard/string.c M ext/standard/tests/strings/strrpos.phpt A ext/standard/tests/strings/strrpos_negative_offset.phpt Diff: diff --git a/ext/standard/string.c b/ext/standard/string.c index 5807304..f746a24 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -2050,10 +2050,10 @@ PHP_FUNCTION(strrpos) RETURN_FALSE; } p = haystack->val; - if (haystack->len + offset + 1 >= needle_len) { - e = haystack->val + haystack->len + offset + needle_len; - } else { + if (-offset < needle_len) { e = haystack->val + haystack->len; + } else { + e = haystack->val + haystack->len + offset + needle_len; } } @@ -2149,10 +2149,10 @@ PHP_FUNCTION(strripos) RETURN_FALSE; } p = haystack_dup->val; - if (haystack->len + offset + 1 >= needle->len) { - e = haystack_dup->val + haystack->len + offset + needle->len; - } else { + if (-offset < needle->len) { e = haystack_dup->val + haystack->len; + } else { + e = haystack_dup->val + haystack->len + offset + needle->len; } } diff --git a/ext/standard/tests/strings/strrpos.phpt b/ext/standard/tests/strings/strrpos.phpt index 6b5ee09..691f67e 100644 --- a/ext/standard/tests/strings/strrpos.phpt +++ b/ext/standard/tests/strings/strrpos.phpt @@ -15,10 +15,6 @@ strrpos() function var_dump(@strrpos("a", "")); var_dump(@strrpos("", "a")); var_dump(@strrpos("\\\\a", "\\a")); - var_dump(strrpos("/documents/show/5474", '/', -20)); - var_dump(@strrpos("/documents/show/5474", '/d', -21)); - var_dump(strrpos("/documents/show/5474", 'd', -19)); - var_dump(strrpos("/documents/show/5474", '/d', -15)); ?> --EXPECT-- int(5) @@ -34,7 +30,3 @@ bool(false) bool(false) bool(false) int(1) -int(0) -bool(false) -int(1) -int(0) diff --git a/ext/standard/tests/strings/strrpos_negative_offset.phpt b/ext/standard/tests/strings/strrpos_negative_offset.phpt new file mode 100644 index 0000000...940c227 --- /dev/null +++ b/ext/standard/tests/strings/strrpos_negative_offset.phpt @@ -0,0 +1,35 @@ +--TEST-- +strr[i]pos() function with negative offset +--FILE-- +<?php + var_dump(strrpos("haysthack", 'ha', -9)); + var_dump(strrpos("haystack", 'h', -8)); + var_dump(strrpos("haystack", 'k', -1)); + var_dump(strrpos("haystack", "ka", -1)); + var_dump(strrpos("haystack", 'a', -3)); + var_dump(strrpos("haystack", 'a', -4)); + var_dump(@strrpos("haystack", 'h', -9)); + + var_dump(strripos("HAYSTHACk", 'ha', -9)); + var_dump(strripos("HAYSTACK", 'h', -8)); + var_dump(strripos("HAYSTACK", 'k', -1)); + var_dump(strripos("HAYSTACK", "ka", -1)); + var_dump(strripos("HAYSTACK", 'a', -3)); + var_dump(strripos("HAYSTACK", 'a', -4)); + var_dump(@strripos("HAYSTACK", 'h', -9)); +?> +--EXPECT-- +int(0) +int(0) +int(7) +bool(false) +int(5) +int(1) +bool(false) +int(0) +int(0) +int(7) +bool(false) +int(5) +int(1) +bool(false)

« previous php.cvs (#84162) next »