ID:               47102
 Updated by:       fel...@php.net
 Reported By:      wharmby at uk dot ibm dot com
-Status:           Open
+Status:           Closed
 Bug Type:         Strings related
 Operating System: Windows XP
 PHP Version:      6CVS-2009-01-14 (snap)
 New Comment:

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

Thanks Andy.

Fixed and removed the XFAIL sections.


Previous Comments:
------------------------------------------------------------------------

[2009-01-15 13:43:02] wharmby at uk dot ibm dot com

8 new tests for strripos() just checked into CVS. 3 fail on PHP6
because of this bug and have XFAIL sections which need removing once
this bug is fixed. They are:

ext/standard/tests/strings/strripos_basic2
ext/standard/tests/strings/strripos_variation1  
ext/standard/tests/strings/strripos_variation2

------------------------------------------------------------------------

[2009-01-14 16:06:32] wharmby at uk dot ibm dot com

Description:
------------
I get an unexpected warning msg when I specify an haystack with a
non-zero offset. 


I think the problem lies in the following code in ext/standard/string.c
 

2913  if (haystack_type == IS_UNICODE) {
2914    if (offset >= 0) {
2915       U16_FWD_N(haystack.u, cu_offset, haystack_len, offset);
2916       if (cu_offset > haystack_len - needle_len) {
2917       php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater
than the length of haystack string");
2918       RETURN_FALSE;
2919    }
2920    u_p = haystack.u + cu_offset;
2921    u_e = haystack.u + haystack_len - needle_len;
2922  } else { 

If (cu_offset > haystack_len - needle_len) then FALSE should be
returned but the warning is bogus; that should only be output if
cu_offset > haystack_len.

Reproduce code:
---------------
<?php

$haystack = "abcdefg";
$needle = "abcdefg";
var_dump( strripos($haystack, $needle, 0) );
var_dump( strripos($haystack, $needle, 1) );

?>

Expected result:
----------------
int(0)
bool(false)

Actual result:
--------------
int(0)
bool(false)
PHP Notice:  strripos(): Offset is greater than the length of haystack
string in .... etc 


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=47102&edit=1

Reply via email to