]> granicus.if.org Git - php/commitdiff
MFH
authorMoriyoshi Koizumi <moriyoshi@php.net>
Thu, 14 Nov 2002 21:35:18 +0000 (21:35 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Thu, 14 Nov 2002 21:35:18 +0000 (21:35 +0000)
ext/mbstring/mbstring.c

index bbbf9b6df0abba81e959c06e70a09438a1d7114e..1a029b0331efd8be8a621b40052ab00d82411db8 100644 (file)
@@ -3535,17 +3535,26 @@ MBSTRING_API char *php_mb_safe_strrchr_ex(const char *s, unsigned int c, size_t
        char *last=NULL;
 
        if (nbytes == (size_t)-1) {
+               size_t nb = 0;
+
                while (*p != '\0') {
-                       if ((unsigned int)*p == c) {
-                               last = (char *)p;
+                       if (nb == 0) {
+                               if ((unsigned char)*p == (unsigned char)c) {
+                                       last = (char *)p;
+                               }
+                               nb = php_mb_mbchar_bytes_ex(p, enc);
+                               if (nb == 0) {
+                                       return NULL; /* something is going wrong! */
+                               }
                        }
-                       p += php_mb_mbchar_bytes_ex(p, enc);
+                       --nb;
+                       ++p;
                }
        } else {
                register size_t bcnt = nbytes;
                register size_t nbytes_char;
                while (bcnt > 0) {
-                       if ((unsigned int)*p == c) {
+                       if ((unsigned char)*p == (unsigned char)c) {
                                last = (char *)p;
                        }
                        nbytes_char = php_mb_mbchar_bytes_ex(p, enc);