|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2009-01-15 13:43 UTC] wharmby at uk dot ibm dot com
[2009-01-17 20:43 UTC] felipe@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 22:00:01 2025 UTC |
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