ID: 47102 User updated by: wharmby at uk dot ibm dot com Reported By: wharmby at uk dot ibm dot com Status: Open Bug Type: Strings related Operating System: Windows XP PHP Version: 6CVS-2009-01-14 (snap) New Comment:
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 Previous Comments: ------------------------------------------------------------------------ [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