PHP_FUNCTION(mb_strpos)
{
int reverse = 0;
- zend_long offset = 0, slen;
+ zend_long offset = 0;
mbfl_string haystack, needle;
char *enc_name = NULL;
size_t enc_name_len, n;
RETURN_FALSE;
}
- slen = mbfl_strlen(&haystack);
- if (offset < 0) {
- offset += slen;
- }
- if (offset < 0 || offset > slen) {
- php_error_docref(NULL, E_WARNING, "Offset not contained in string");
- RETURN_FALSE;
+ if (offset != 0) {
+ size_t slen = mbfl_strlen(&haystack);
+ if (offset < 0) {
+ offset += slen;
+ }
+ if (offset < 0 || offset > slen) {
+ php_error_docref(NULL, E_WARNING, "Offset not contained in string");
+ RETURN_FALSE;
+ }
}
+
if (needle.len == 0) {
php_error_docref(NULL, E_WARNING, "Empty delimiter");
RETURN_FALSE;
}
}
- {
+ if (offset != 0) {
size_t haystack_char_len = mbfl_strlen(&haystack);
if ((offset > 0 && offset > haystack_char_len) ||
(offset < 0 && -offset > haystack_char_len)) {
break;
}
- {
+ if (offset != 0) {
size_t haystack_char_len = mbfl_strlen(&haystack);
if (mode) {