Bug #73913 [Opn]: broken strrpos with negative offset
| From: | proartex at mail dot ru | 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