]> granicus.if.org Git - php/commitdiff
- Refix bug #43840.
authorMoriyoshi Koizumi <moriyoshi@php.net>
Sun, 15 Feb 2009 07:04:07 +0000 (07:04 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Sun, 15 Feb 2009 07:04:07 +0000 (07:04 +0000)
- Fix bug #43841.
- Remove redundant trailing dots from the error messages.
- Fix tests.

17 files changed:
ext/mbstring/libmbfl/mbfl/mbfilter.c
ext/mbstring/mbstring.c
ext/mbstring/tests/bug43840.phpt
ext/mbstring/tests/bug43841.phpt
ext/mbstring/tests/mb_stripos_variation2.phpt
ext/mbstring/tests/mb_stripos_variation3.phpt
ext/mbstring/tests/mb_stripos_variation5_Bug45923.phpt
ext/mbstring/tests/mb_stristr_variation2.phpt
ext/mbstring/tests/mb_strpos_variation2.phpt
ext/mbstring/tests/mb_strpos_variation3.phpt
ext/mbstring/tests/mb_strpos_variation5.phpt
ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt
ext/mbstring/tests/mb_strripos_variation5_Bug45923.phpt
ext/mbstring/tests/mb_strrpos_variation3.phpt
ext/mbstring/tests/mb_strrpos_variation5.phpt
ext/mbstring/tests/mb_strstr_variation2.phpt
ext/mbstring/tests/mb_substr_count_variation2.phpt

index 646912ad16cbcc1366e324dc91c1d4f4f24e0b9d..1aeb38cc9b7ddcec3d3961a762ec1819e1d26dc0 100644 (file)
@@ -778,7 +778,7 @@ retry:
                        for (;;) {
                                pc->found_pos++;
                                p = h;
-                               m = pc->needle.buffer;
+                               m = (int *)pc->needle.buffer;
                                n = pc->needle_pos - 1;
                                while (n > 0 && *p == *m) {
                                        n--;
@@ -857,87 +857,203 @@ mbfl_strpos(
     int offset,
     int reverse)
 {
-       int n, result, negative_offset = 0;
-       unsigned char *p;
-       mbfl_convert_filter *filter;
-       struct collector_strpos_data pc;
+       int result;
+       mbfl_string _haystack_u8, _needle_u8;
+       const mbfl_string *haystack_u8, *needle_u8;
+       const unsigned char *u8_tbl;
 
-       if (haystack == NULL || needle == NULL) {
+       if (haystack == NULL || haystack->val == NULL || needle == NULL || needle->val == NULL) {
                return -8;
        }
-       /* needle is converted into wchar */
-       mbfl_wchar_device_init(&pc.needle);
-       filter = mbfl_convert_filter_new(
-         needle->no_encoding,
-         mbfl_no_encoding_wchar,
-         mbfl_wchar_device_output, 0, &pc.needle);
-       if (filter == NULL) {
-               return -4;
-       }
-       p = needle->val;
-       n = needle->len;
-       if (p != NULL) {
-               while (n > 0) {
-                       if ((*filter->filter_function)(*p++, filter) < 0) {
-                               break;
-                       }
-                       n--;
+
+       {
+               const mbfl_encoding *u8_enc;
+               u8_enc = mbfl_no2encoding(mbfl_no_encoding_utf8);
+               if (u8_enc == NULL || u8_enc->mblen_table == NULL) {
+                       return -8;
                }
+               u8_tbl = u8_enc->mblen_table;
        }
-       mbfl_convert_filter_flush(filter);
-       mbfl_convert_filter_delete(filter);
-       pc.needle_len = pc.needle.pos;
-       if (pc.needle.buffer == NULL) {
-               return -4;
-       }
-       if (pc.needle_len <= 0) {
-               mbfl_wchar_device_clear(&pc.needle);
-               return -2;
-       }
-       /* initialize filter and collector data */
-       filter = mbfl_convert_filter_new(
-         haystack->no_encoding,
-         mbfl_no_encoding_wchar,
-         collector_strpos, 0, &pc);
-       if (filter == NULL) {
-               mbfl_wchar_device_clear(&pc.needle);
-               return -4;
+
+       if (haystack->no_encoding != mbfl_no_encoding_utf8) {
+               mbfl_string_init(&_haystack_u8);
+               haystack_u8 = mbfl_convert_encoding(haystack, &_haystack_u8, mbfl_no_encoding_utf8);
+               if (haystack_u8 == NULL) {
+                       result = -4;
+                       goto out;
+               }
+       } else {
+               haystack_u8 = haystack;
        }
 
-       if (offset < 0) {
-               negative_offset = -offset - pc.needle_len;
-               if (negative_offset < 0) {
-                       negative_offset = 0;
+       if (needle->no_encoding != mbfl_no_encoding_utf8) {
+               mbfl_string_init(&_needle_u8);
+               needle_u8 = mbfl_convert_encoding(needle, &_needle_u8, mbfl_no_encoding_utf8);
+               if (needle_u8 == NULL) {
+                       result = -4;
+                       goto out;
                }
-               offset = 0;
+       } else {
+               needle_u8 = needle;
        }
 
-       pc.start = offset;
-       pc.output = 0;
-       pc.needle_pos = 0;
-       pc.found_pos = 0;
-       pc.matched_pos = -1;
+       if (needle_u8->len < 1) {
+               result = -8;
+               goto out;
+       }
 
-       /* feed data */
-       p = haystack->val;
-       n = haystack->len - negative_offset;
-       if (p != NULL) {
-               while (n > 0) {
-                       if ((*filter->filter_function)(*p++, filter) < 0) {
-                               pc.matched_pos = -4;
-                               break;
+       result = -1;
+       if (haystack_u8->len < needle_u8->len) {
+               goto out;
+       }
+
+       if (!reverse) {
+               unsigned int jtbl[1 << (sizeof(unsigned char) * 8)];
+               unsigned int needle_u8_len = needle_u8->len;
+               unsigned int i;
+               const unsigned char *p, *q, *e;
+               const unsigned char *haystack_u8_val = haystack_u8->val,
+                                   *needle_u8_val = needle_u8->val;
+               for (i = 0; i < sizeof(jtbl) / sizeof(*jtbl); ++i) {
+                       jtbl[i] = needle_u8_len + 1;
+               }
+               for (i = 0; i < needle_u8_len - 1; ++i) {
+                       jtbl[needle_u8_val[i]] = needle_u8_len - i;
+               }
+               e = haystack_u8_val + haystack_u8->len;
+               p = haystack_u8_val;
+               while (--offset >= 0) {
+                       if (p >= e) {
+                               result = -16;
+                               goto out;
                        }
-                       if (pc.matched_pos >= 0 && !reverse) {
-                               break;
+                       p += u8_tbl[*p];
+               }
+               p += needle_u8_len;
+               if (p > e) {
+                       goto out;
+               }
+               while (p <= e) {
+                       const unsigned char *pv = p;
+                       q = needle_u8_val + needle_u8_len;
+                       for (;;) {
+                               if (q == needle_u8_val) {
+                                       result = 0;
+                                       while (p > haystack_u8_val) {
+                                               unsigned char c = *--p;
+                                               if (c < 0x80) {
+                                                       ++result;
+                                               } else if ((c & 0xc0) != 0x80) {
+                                                       ++result;
+                                               }       
+                                       }
+                                       goto out;
+                               }
+                               if (*--q != *--p) {
+                                       break;
+                               }
+                       }
+                       p += jtbl[*p];
+                       if (p <= pv) {
+                               p = pv + 1;
+                       }
+               }
+       } else {
+               unsigned int jtbl[1 << (sizeof(unsigned char) * 8)];
+               unsigned int needle_u8_len = needle_u8->len, needle_len = 0;
+               unsigned int i;
+               const unsigned char *p, *e, *q, *qe;
+               const unsigned char *haystack_u8_val = haystack_u8->val,
+                                   *needle_u8_val = needle_u8->val;
+               for (i = 0; i < sizeof(jtbl) / sizeof(*jtbl); ++i) {
+                       jtbl[i] = needle_u8_len;
+               }
+               for (i = needle_u8_len - 1; i > 0; --i) {
+                       unsigned char c = needle_u8_val[i];
+                       jtbl[c] = i;
+                       if (c < 0x80) {
+                               ++needle_len;
+                       } else if ((c & 0xc0) != 0x80) {
+                               ++needle_len;
+                       }
+               }
+               {
+                       unsigned char c = needle_u8_val[0];
+                       if (c < 0x80) {
+                               ++needle_len;
+                       } else if ((c & 0xc0) != 0x80) {
+                               ++needle_len;
+                       }
+               }
+               e = haystack_u8_val;
+               p = e + haystack_u8->len;
+               qe = needle_u8_val + needle_u8_len;
+               if (offset < 0) {
+                       if (-offset > needle_len) {
+                               offset += needle_len; 
+                               while (offset < 0) {
+                                       unsigned char c;
+                                       if (p <= e) {
+                                               result = -16;
+                                               goto out;
+                                       }
+                                       c = *(--p);
+                                       if (c < 0x80) {
+                                               ++offset;
+                                       } else if ((c & 0xc0) != 0x80) {
+                                               ++offset;
+                                       }
+                               }
+                       }
+               } else {
+                       const unsigned char *ee = haystack_u8_val + haystack_u8->len;
+                       while (--offset >= 0) {
+                               if (e >= ee) {
+                                       result = -16;
+                                       goto out;
+                               }
+                               e += u8_tbl[*e];
+                       }
+               }
+               if (p < e + needle_u8_len) {
+                       goto out;
+               }
+               p -= needle_u8_len;
+               while (p >= e) {
+                       const unsigned char *pv = p;
+                       q = needle_u8_val;
+                       for (;;) {
+                               if (q == qe) {
+                                       result = 0;
+                                       p -= needle_u8_len;
+                                       while (p > haystack_u8_val) {
+                                               unsigned char c = *--p;
+                                               if (c < 0x80) {
+                                                       ++result;
+                                               } else if ((c & 0xc0) != 0x80) {
+                                                       ++result;
+                                               }       
+                                       }
+                                       goto out;
+                               }
+                               if (*q != *p) {
+                                       break;
+                               }
+                               ++p, ++q;
+                       }
+                       p -= jtbl[*p];
+                       if (p >= pv) {
+                               p = pv - 1;
                        }
-                       n--;
                }
        }
-       mbfl_convert_filter_flush(filter);
-       result = pc.matched_pos;
-       mbfl_convert_filter_delete(filter);
-       mbfl_wchar_device_clear(&pc.needle);
-
+out:
+       if (haystack_u8 == &_haystack_u8) {
+               mbfl_string_clear(&_haystack_u8);
+       }
+       if (needle_u8 == &_needle_u8) {
+               mbfl_string_clear(&_needle_u8);
+       }
        return result;
 }
 
index 7b5108545e42edfacaa2cc15224a962a8399250f..6dadbb042fde0933c8548fb3695a097fd8d15561 100644 (file)
@@ -2080,7 +2080,7 @@ PHP_FUNCTION(mb_strpos)
                RETURN_FALSE;
        }
        if (needle.len == 0) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter.");
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter");
                RETURN_FALSE;
        }
 
@@ -2223,7 +2223,7 @@ PHP_FUNCTION(mb_stripos)
                RETURN_FALSE;
        }
        if (needle.len == 0) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter.");
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter");
                RETURN_FALSE;
        }
        n = php_mb_stripos(0, (char *)haystack.val, haystack.len, (char *)needle.val, needle.len, offset, from_encoding TSRMLS_CC);
@@ -2292,7 +2292,7 @@ PHP_FUNCTION(mb_strstr)
        }
 
        if (needle.len <= 0) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING,"Empty delimiter.");
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter");
                RETURN_FALSE;
        }
        n = mbfl_strpos(&haystack, &needle, 0, 0);
@@ -2402,7 +2402,7 @@ PHP_FUNCTION(mb_stristr)
        }
 
        if (!needle.len) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING,"Empty delimiter.");
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter");
                RETURN_FALSE;
        }
 
@@ -2521,7 +2521,7 @@ PHP_FUNCTION(mb_substr_count)
        }
 
        if (needle.len <= 0) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING,"Empty substring.");
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty substring");
                RETURN_FALSE;
        }
 
index 8119bae325d18bb6e06fe432a66581a3b077775d..004807eb1dcb2c75a6889a033f2b4e538d2ae220 100644 (file)
@@ -46,27 +46,31 @@ bool(false)
 
 -- Offset is 22 --
 --Multibyte String:--
+
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 --ASCII String:--
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Offset is 53 --
 --Multibyte String:--
+
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 --ASCII String:--
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Offset is 54 --
 --Multibyte String:--
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 --ASCII String:--
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
index 340916902ec64961cfd46ac1f6f780e645597441..ff47a02b8ad3a02fe1c6ed7859a3e04ec51d9088 100644 (file)
@@ -1,6 +1,5 @@
 --TEST--
 Test mb_strrpos() function : mb_strrpos offset is byte count for negative values
---XFAIL--
 --SKIPIF--
 <?php
 extension_loaded('mbstring') or die('skip');
@@ -38,29 +37,37 @@ foreach ($offsets as $i) {
 --EXPECTF--
 -- Offset is -25 --
 Multibyte String:
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 ASCII String:
 mb_strrpos:
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 strrpos:
 
-Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Offset is -24 --
 Multibyte String:
-int(9)
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
+bool(false)
 ASCII String:
 mb_strrpos:
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 strrpos:
 
-Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d
+Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Offset is -13 --
 Multibyte String:
-int(9)
+bool(false)
 ASCII String:
 mb_strrpos:
 bool(false)
index 67487e26271de262caa0258df742d9cac1cde1af..0c1525d3c6ea039540f306f8da0c7d661dcf651a 100644 (file)
@@ -136,12 +136,12 @@ bool(false)
 
 -- Iteration 10 --
 
-Warning: mb_stripos(): Empty delimiter. in %s on line %d
+Warning: mb_stripos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 11 --
 
-Warning: mb_stripos(): Empty delimiter. in %s on line %d
+Warning: mb_stripos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 12 --
@@ -149,7 +149,7 @@ bool(false)
 
 -- Iteration 13 --
 
-Warning: mb_stripos(): Empty delimiter. in %s on line %d
+Warning: mb_stripos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 14 --
@@ -157,17 +157,17 @@ bool(false)
 
 -- Iteration 15 --
 
-Warning: mb_stripos(): Empty delimiter. in %s on line %d
+Warning: mb_stripos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 16 --
 
-Warning: mb_stripos(): Empty delimiter. in %s on line %d
+Warning: mb_stripos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 17 --
 
-Warning: mb_stripos(): Empty delimiter. in %s on line %d
+Warning: mb_stripos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 18 --
@@ -184,12 +184,12 @@ bool(false)
 
 -- Iteration 22 --
 
-Warning: mb_stripos(): Empty delimiter. in %s on line %d
+Warning: mb_stripos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 23 --
 
-Warning: mb_stripos(): Empty delimiter. in %s on line %d
+Warning: mb_stripos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 24 --
index e2d2a4ca045f94bb9fdf0b98813d514d77c8225e..207f09a6c3e03b319b50f40cd5f4588b61dab660 100644 (file)
@@ -115,12 +115,12 @@ int(8)
 
 -- Iteration 3 --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Iteration 4 --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Iteration 5 --
@@ -128,12 +128,12 @@ bool(false)
 
 -- Iteration 6 --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Iteration 7 --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Iteration 8 --
index 0a5e682e028d07662aa047f9bc7998321dd7b0e0..fbe4937ac2b172c0218625ab7e6a419ed1f73c8a 100644 (file)
@@ -51,11 +51,11 @@ echo "Done";
 **-- Offset is: -10 --**
 -- ASCII String --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 
 **-- Offset is: 0 --**
@@ -79,35 +79,41 @@ int(20)
 **-- Offset is: 30 --**
 -- ASCII String --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 
 **-- Offset is: 40 --**
 -- ASCII String --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 
 **-- Offset is: 50 --**
 -- ASCII String --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 
 **-- Offset is: 60 --**
 -- ASCII String --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
 
-Warning: mb_stripos(): Offset not contained in string. in %s on line %d
+Warning: mb_stripos(): Offset not contained in string in %s on line %d
 bool(false)
 Done
 
index e33f2f7b82858d668112ea94162d05290f4426c4..c67f5b06d9e480ef2eb3b22dec76ca65b740d3b9 100644 (file)
@@ -165,38 +165,38 @@ Error: 2 - mb_stristr() expects parameter 2 to be binary string, array given, %s
 bool(false)
 
 --uppercase NULL--
-Error: 2 - mb_stristr(): Empty delimiter., %s(%d)
+Error: 2 - mb_stristr(): Empty delimiter, %s(%d)
 bool(false)
 
 --lowercase null--
-Error: 2 - mb_stristr(): Empty delimiter., %s(%d)
+Error: 2 - mb_stristr(): Empty delimiter, %s(%d)
 bool(false)
 
 --lowercase true--
 bool(false)
 
 --lowercase false--
-Error: 2 - mb_stristr(): Empty delimiter., %s(%d)
+Error: 2 - mb_stristr(): Empty delimiter, %s(%d)
 bool(false)
 
 --uppercase TRUE--
 bool(false)
 
 --uppercase FALSE--
-Error: 2 - mb_stristr(): Empty delimiter., %s(%d)
+Error: 2 - mb_stristr(): Empty delimiter, %s(%d)
 bool(false)
 
 --empty string DQ--
-Error: 2 - mb_stristr(): Empty delimiter., %s(%d)
+Error: 2 - mb_stristr(): Empty delimiter, %s(%d)
 bool(false)
 
 --empty string SQ--
-Error: 2 - mb_stristr(): Empty delimiter., %s(%d)
+Error: 2 - mb_stristr(): Empty delimiter, %s(%d)
 bool(false)
 
 --instance of classWithToString--
 Error: 4096 - Method classWithToString::__toString() must return a string value, %s(%d)
-Error: 2 - mb_stristr(): Empty delimiter., %s(%d)
+Error: 2 - mb_stristr(): Empty delimiter, %s(%d)
 bool(false)
 
 --instance of classWithoutToString--
@@ -204,11 +204,11 @@ Error: 2 - mb_stristr() expects parameter 2 to be binary string, object given, %
 bool(false)
 
 --undefined var--
-Error: 2 - mb_stristr(): Empty delimiter., %s(%d)
+Error: 2 - mb_stristr(): Empty delimiter, %s(%d)
 bool(false)
 
 --unset var--
-Error: 2 - mb_stristr(): Empty delimiter., %s(%d)
+Error: 2 - mb_stristr(): Empty delimiter, %s(%d)
 bool(false)
 
 --resource--
index dcd70a3c2b101fc3603c87517d70b4147c01ff3a..d6a593ce2b599487c63789c9bd807d941906f3c6 100644 (file)
@@ -135,12 +135,12 @@ bool(false)
 
 -- Iteration 10 --
 
-Warning: mb_strpos(): Empty delimiter. in %s on line %d
+Warning: mb_strpos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 11 --
 
-Warning: mb_strpos(): Empty delimiter. in %s on line %d
+Warning: mb_strpos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 12 --
@@ -148,7 +148,7 @@ bool(false)
 
 -- Iteration 13 --
 
-Warning: mb_strpos(): Empty delimiter. in %s on line %d
+Warning: mb_strpos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 14 --
@@ -156,17 +156,17 @@ bool(false)
 
 -- Iteration 15 --
 
-Warning: mb_strpos(): Empty delimiter. in %s on line %d
+Warning: mb_strpos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 16 --
 
-Warning: mb_strpos(): Empty delimiter. in %s on line %d
+Warning: mb_strpos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 17 --
 
-Warning: mb_strpos(): Empty delimiter. in %s on line %d
+Warning: mb_strpos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 18 --
@@ -183,16 +183,16 @@ bool(false)
 
 -- Iteration 22 --
 
-Warning: mb_strpos(): Empty delimiter. in %s on line %d
+Warning: mb_strpos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 23 --
 
-Warning: mb_strpos(): Empty delimiter. in %s on line %d
+Warning: mb_strpos(): Empty delimiter in %s on line %d
 bool(false)
 
 -- Iteration 24 --
 
 Warning: mb_strpos() expects parameter 2 to be binary string, resource given in %s on line %d
 bool(false)
-Done
\ No newline at end of file
+Done
index 69cf641d84fd725e09239afc9c5fe870f042c81b..4a699a87f9f96a6cd8cf9db1ea16faf5ca8ef1de 100644 (file)
@@ -114,12 +114,12 @@ int(8)
 
 -- Iteration 3 --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Iteration 4 --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Iteration 5 --
@@ -127,12 +127,12 @@ bool(false)
 
 -- Iteration 6 --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Iteration 7 --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 -- Iteration 8 --
index 0164f0faf53c5214e8c26a60b2a481bc13481c98..36380310c17c8556f119ee5a27aa6a9cc90e1943 100644 (file)
@@ -50,11 +50,11 @@ echo "Done";
 **-- Offset is: -10 --**
 -- ASCII String --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 **-- Offset is: 0 --**
@@ -78,35 +78,41 @@ int(20)
 **-- Offset is: 30 --**
 -- ASCII String --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 **-- Offset is: 40 --**
 -- ASCII String --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 **-- Offset is: 50 --**
 -- ASCII String --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 
 **-- Offset is: 60 --**
 -- ASCII String --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 --Multibyte String --
 
-Warning: mb_strpos(): Offset not contained in string. in %s on line %d
+Warning: mb_strpos(): Offset not contained in string in %s on line %d
 bool(false)
 Done
 
index f59fdc4e399a2aa80e57e9c8534b21dfb6589c47..c9a2e3a6187188361943ee0fff9cdb02820bae2d 100644 (file)
@@ -114,18 +114,28 @@ int(8)
 int(8)
 
 -- Iteration 3 --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Iteration 4 --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Iteration 5 --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Iteration 6 --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Iteration 7 --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Iteration 8 --
index 02792554ebc9c0246342b0d5ee9eeb299426ea07..8bd0e2e8bf2799956e4a3ab88f4a2a36841c1e12 100644 (file)
@@ -50,9 +50,9 @@ echo "Done";
 
 **-- Offset is: -10 --**
 -- ASCII String --
-bool(false)
+int(9)
 --Multibyte String --
-bool(false)
+int(9)
 
 **-- Offset is: 0 --**
 -- ASCII String --
@@ -74,26 +74,42 @@ int(20)
 
 **-- Offset is: 30 --**
 -- ASCII String --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: 40 --**
 -- ASCII String --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: 50 --**
 -- ASCII String --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: 60 --**
 -- ASCII String --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 Done
 
index 6728c113c4ed50d548eee71d724755efc22b289e..0e665bdc531fd58329a497c651d139586b7f05aa 100644 (file)
@@ -96,9 +96,13 @@ int(8)
 int(8)
 
 -- Iteration 3 --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Iteration 4 --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Iteration 5 --
@@ -108,6 +112,8 @@ bool(false)
 bool(false)
 
 -- Iteration 7 --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 -- Iteration 8 --
index 44c166103646a73b8137fd28352c1493de184dfd..5e0bb9c8334d8c16b6bcaa2a3f556e3a917c7c10 100644 (file)
@@ -38,31 +38,47 @@ for ($i = -60; $i <= 60; $i += 10) {
 
 echo "Done";
 ?>
---EXPECT--
+--EXPECTF--
 *** Testing mb_strrpos() : usage variations ***
 
 **-- Offset is: -60 --**
 -- ASCII String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: -50 --**
 -- ASCII String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: -40 --**
 -- ASCII String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: -30 --**
 -- ASCII String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: -20 --**
@@ -97,25 +113,41 @@ int(20)
 
 **-- Offset is: 30 --**
 -- ASCII String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: 40 --**
 -- ASCII String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: 50 --**
 -- ASCII String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 
 **-- Offset is: 60 --**
 -- ASCII String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 --Multibyte String --
+
+Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d
 bool(false)
 Done
index fb84ff5ad4a777a75c5381a0b69a456638705e2e..e56d9fb8d51cf71031fe2279fcf8202320e718c7 100644 (file)
@@ -165,38 +165,38 @@ Error: 2 - mb_strstr() expects parameter 2 to be binary string, array given, %s(
 bool(false)
 
 --uppercase NULL--
-Error: 2 - mb_strstr(): Empty delimiter., %s(%d)
+Error: 2 - mb_strstr(): Empty delimiter, %s(%d)
 bool(false)
 
 --lowercase null--
-Error: 2 - mb_strstr(): Empty delimiter., %s(%d)
+Error: 2 - mb_strstr(): Empty delimiter, %s(%d)
 bool(false)
 
 --lowercase true--
 bool(false)
 
 --lowercase false--
-Error: 2 - mb_strstr(): Empty delimiter., %s(%d)
+Error: 2 - mb_strstr(): Empty delimiter, %s(%d)
 bool(false)
 
 --uppercase TRUE--
 bool(false)
 
 --uppercase FALSE--
-Error: 2 - mb_strstr(): Empty delimiter., %s(%d)
+Error: 2 - mb_strstr(): Empty delimiter, %s(%d)
 bool(false)
 
 --empty string DQ--
-Error: 2 - mb_strstr(): Empty delimiter., %s(%d)
+Error: 2 - mb_strstr(): Empty delimiter, %s(%d)
 bool(false)
 
 --empty string SQ--
-Error: 2 - mb_strstr(): Empty delimiter., %s(%d)
+Error: 2 - mb_strstr(): Empty delimiter, %s(%d)
 bool(false)
 
 --instance of classWithToString--
 Error: 4096 - Method classWithToString::__toString() must return a string value, %s(%d)
-Error: 2 - mb_strstr(): Empty delimiter., %s(%d)
+Error: 2 - mb_strstr(): Empty delimiter, %s(%d)
 bool(false)
 
 --instance of classWithoutToString--
@@ -204,11 +204,11 @@ Error: 2 - mb_strstr() expects parameter 2 to be binary string, object given, %s
 bool(false)
 
 --undefined var--
-Error: 2 - mb_strstr(): Empty delimiter., %s(%d)
+Error: 2 - mb_strstr(): Empty delimiter, %s(%d)
 bool(false)
 
 --unset var--
-Error: 2 - mb_strstr(): Empty delimiter., %s(%d)
+Error: 2 - mb_strstr(): Empty delimiter, %s(%d)
 bool(false)
 
 --resource--
index 89832dbf91d52fe52c445e1a6a87ab9378901aa5..eea3912667115b10cf32705d5badce95b1864bd8 100644 (file)
@@ -133,12 +133,12 @@ int(0)
 
 -- Iteration 10 --
 
-Warning: mb_substr_count(): Empty substring. in %s on line %d
+Warning: mb_substr_count(): Empty substring in %s on line %d
 bool(false)
 
 -- Iteration 11 --
 
-Warning: mb_substr_count(): Empty substring. in %s on line %d
+Warning: mb_substr_count(): Empty substring in %s on line %d
 bool(false)
 
 -- Iteration 12 --
@@ -146,7 +146,7 @@ int(0)
 
 -- Iteration 13 --
 
-Warning: mb_substr_count(): Empty substring. in %s on line %d
+Warning: mb_substr_count(): Empty substring in %s on line %d
 bool(false)
 
 -- Iteration 14 --
@@ -154,17 +154,17 @@ int(0)
 
 -- Iteration 15 --
 
-Warning: mb_substr_count(): Empty substring. in %s on line %d
+Warning: mb_substr_count(): Empty substring in %s on line %d
 bool(false)
 
 -- Iteration 16 --
 
-Warning: mb_substr_count(): Empty substring. in %s on line %d
+Warning: mb_substr_count(): Empty substring in %s on line %d
 bool(false)
 
 -- Iteration 17 --
 
-Warning: mb_substr_count(): Empty substring. in %s on line %d
+Warning: mb_substr_count(): Empty substring in %s on line %d
 bool(false)
 
 -- Iteration 18 --
@@ -181,16 +181,16 @@ int(1)
 
 -- Iteration 22 --
 
-Warning: mb_substr_count(): Empty substring. in %s on line %d
+Warning: mb_substr_count(): Empty substring in %s on line %d
 bool(false)
 
 -- Iteration 23 --
 
-Warning: mb_substr_count(): Empty substring. in %s on line %d
+Warning: mb_substr_count(): Empty substring in %s on line %d
 bool(false)
 
 -- Iteration 24 --
 
 Warning: mb_substr_count() expects parameter 2 to be binary string, resource given in %s on line %d
 NULL
-Done
\ No newline at end of file
+Done