From: Moriyoshi Koizumi Date: Thu, 14 Nov 2002 21:35:18 +0000 (+0000) Subject: MFH X-Git-Tag: php-4.3.0RC2~172 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fcc8f8fbd00f39718bf6aef11ce0fc0a698d1d55;p=php MFH --- diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index bbbf9b6df0..1a029b0331 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -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);