From: Antony Dovgal Date: Tue, 8 Aug 2006 09:48:08 +0000 (+0000) Subject: use memrchr/zend_memrchr instead of strrchr X-Git-Tag: RELEASE_1_0_0RC1~2043 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9cc9f2da3e0b3b20e4bded525abcda63177ee4ca;p=php use memrchr/zend_memrchr instead of strrchr fix wrong test --- diff --git a/ext/standard/string.c b/ext/standard/string.c index ce3d660420..f0ada8c8a1 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -2104,13 +2104,13 @@ PHP_FUNCTION(pathinfo) int ext_len; if (path_type == IS_UNICODE) { - ext.u = u_strrchr(ret.u, (UChar) 0x2e /*'.'*/); + ext.u = u_memrchr32(ret.u, (UChar) 0x2e /*'.'*/, ret_len); if (ext.u) { ext.u++; ext_len = ret_len - (ext.u - ret.u); } } else { - ext.s = strrchr(ret.s, '.'); + ext.s = zend_memrchr(ret.s, '.', ret_len); if (ext.s) { ext.s++; ext_len = ret_len - (ext.s - ret.s); @@ -2127,10 +2127,10 @@ PHP_FUNCTION(pathinfo) int idx; if (path_type == IS_UNICODE) { - p.u = u_strrchr(ret.u, (UChar) 0x2e /*'.'*/); + p.u = u_memrchr32(ret.u, (UChar) 0x2e /*'.'*/, ret_len); idx = p.u ? (p.u - ret.u) : ret_len; } else { - p.s = strrchr(ret.s, '.'); + p.s = zend_memrchr(ret.s, '.', ret_len); idx = p.s ? (p.s - ret.s) : ret_len; } @@ -2961,7 +2961,7 @@ PHP_FUNCTION(strrchr) ch = zend_get_codepoint_at(Z_USTRVAL_P(needle), Z_USTRLEN_P(needle), 0); found = u_memrchr32(Z_USTRVAL_P(haystack), ch, Z_USTRLEN_P(haystack)); } else { - found = strrchr(Z_STRVAL_P(haystack), *Z_STRVAL_P(needle)); + found = zend_memrchr(Z_STRVAL_P(haystack), *Z_STRVAL_P(needle), Z_STRLEN_P(haystack)); } } else { convert_to_long(needle); @@ -2973,7 +2973,7 @@ PHP_FUNCTION(strrchr) } found = u_memrchr32(Z_USTRVAL_P(haystack), ch, Z_USTRLEN_P(haystack)); } else { - found = strrchr(Z_STRVAL_P(haystack), (char)Z_LVAL_P(needle)); + found = zend_memrchr(Z_STRVAL_P(haystack), (char)Z_LVAL_P(needle), Z_STRLEN_P(haystack)); } } diff --git a/ext/standard/tests/strings/strings001.phpt b/ext/standard/tests/strings/strings001.phpt index 87f8489b8a..4ccb558fad 100644 --- a/ext/standard/tests/strings/strings001.phpt +++ b/ext/standard/tests/strings/strings001.phpt @@ -9,4 +9,7 @@ var_dump(strrchr($s," nic")); ?> --EXPECTREGEX-- string\(18\) \"nica\x00turska panica\" -string\(19\) \" nica\x00turska panica\" +string\(7\) \" panica\" +--UEXPECTREGEX-- +unicode\(18\) \"nica\x00turska panica\" +unicode\(7\) \" panica\"