Bug #73913 [Opn]: broken strrpos with negative offset

From: Date: Wed, 11 Jan 2017 17:19:23 +0000
Subject: Bug #73913 [Opn]: broken strrpos with negative offset
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-206531@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73913&edit=1 ID: 73913 User updated by: proartex at mail dot ru Reported by: proartex at mail dot ru Summary: broken strrpos with negative offset Status: Open Type: Bug Package: Strings related Operating System: macOS Sierra 10.12.1 PHP Version: 5.6.29 Block user comment: N Private report: N New Comment: last case must be var_dump(strrpos("works_like_a_charm", 'charm', -5)); //ER: false, AR: 13 Previous Comments: ------------------------------------------------------------------------ [2017-01-11 17:16:36] proartex at mail dot ru Description: ------------ It is seems broken at least in the following cases: - if negative offset equals to haystack length; - if negative offset less than needle length; - if needle length equals to (haystack length + negative offset) Negative offset should not move pointer but reduce search scope on the value of offset. In that case character placed at 0 position must not be found if search scope is reduced to empty string. Same should be applied in boundary cases: character placed next to reduced search scope must not be found (last case). Test script: --------------- <?php var_dump(strrpos("aaaa", 'aa', -2)); //ER: 0, AR: 2 var_dump(strrpos("aaaa", 'a', -1)); //ER: 2, AR: 3 var_dump(strrpos("/documents/show/5474", '/', -20)); //ER: false, AR: 0 var_dump(strrpos("works_like_a_charm", 'charm', -3)); //ER: false, AR: 13 var_dump(strrpos("works_like_a_charm", 'charm', -4)); //ER: false, AR: 13 Expected result: ---------------- 0 2 false false false Actual result: -------------- 2 3 0 13 13 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=73913&edit=1

« previous php.bugs (#206531) next »