moriyoshi Thu Apr 27 00:49:18 2006 UTC
Added files:
/php-src/ext/iconv/tests bug37176.phpt
Modified files:
/php-src/ext/iconv iconv.c
Log:
- Fix bug #37176 (iconv_strpos() fails to find a string)
http://cvs.php.net/viewcvs.cgi/php-src/ext/iconv/iconv.c?r1=1.132&r2=1.133&diff_format=u
Index: php-src/ext/iconv/iconv.c
diff -u php-src/ext/iconv/iconv.c:1.132 php-src/ext/iconv/iconv.c:1.133
--- php-src/ext/iconv/iconv.c:1.132 Fri Feb 24 16:04:55 2006
+++ php-src/ext/iconv/iconv.c Thu Apr 27 00:49:17 2006
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: iconv.c,v 1.132 2006/02/24 16:04:55 derick Exp $ */
+/* $Id: iconv.c,v 1.133 2006/04/27 00:49:17 moriyoshi Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -797,6 +797,7 @@
}
if (offset >= 0) {
if (cnt >= (unsigned int)offset) {
+ fprintf(stderr, "%s %s\n", ndl_buf_p, buf);
if (_php_iconv_memequal(buf, ndl_buf_p,
sizeof(buf))) {
if (match_ofs == (unsigned int)-1) {
match_ofs = cnt;
@@ -825,18 +826,16 @@
j += GENERIC_SUPERSET_NBYTES;
}
- if (!_php_iconv_memequal(buf,
&ndl_buf[i], sizeof(buf))) {
- i = 0;
- }
-
- if (i == 0) {
- match_ofs = (unsigned int)-1;
- } else {
+ if (_php_iconv_memequal(buf,
&ndl_buf[i], sizeof(buf))) {
match_ofs += (lim - i) /
GENERIC_SUPERSET_NBYTES;
i += GENERIC_SUPERSET_NBYTES;
+ ndl_buf_p = &ndl_buf[i];
+ ndl_buf_left = ndl_buf_len - i;
+ } else {
+ match_ofs = (unsigned int)-1;
+ ndl_buf_p = ndl_buf;
+ ndl_buf_left = ndl_buf_len;
}
- ndl_buf_p = &ndl_buf[i];
- ndl_buf_left = ndl_buf_len - i;
}
}
} else {
@@ -870,18 +869,16 @@
j += GENERIC_SUPERSET_NBYTES;
}
- if (!_php_iconv_memequal(buf, &ndl_buf[i],
sizeof(buf))) {
- i = 0;
- }
-
- if (i == 0) {
- match_ofs = (unsigned int)-1;
- } else {
+ if (_php_iconv_memequal(buf, &ndl_buf[i],
sizeof(buf))) {
match_ofs += (lim - i) /
GENERIC_SUPERSET_NBYTES;
i += GENERIC_SUPERSET_NBYTES;
+ ndl_buf_p = &ndl_buf[i];
+ ndl_buf_left = ndl_buf_len - i;
+ } else {
+ match_ofs = (unsigned int)-1;
+ ndl_buf_p = ndl_buf;
+ ndl_buf_left = ndl_buf_len;
}
- ndl_buf_p = &ndl_buf[i];
- ndl_buf_left = ndl_buf_len - i;
}
}
}
http://cvs.php.net/viewcvs.cgi/php-src/ext/iconv/tests/bug37176.phpt?view=markup&rev=1.1
Index: php-src/ext/iconv/tests/bug37176.phpt
+++ php-src/ext/iconv/tests/bug37176.phpt
--TEST--
Bug #37176 (iconv_strpos() fails to find a string)
--FILE--
<?php
var_dump(iconv_strpos('11--','1-',0,'UTF-8'));
var_dump(iconv_strpos('-11--','1-',0,'UTF-8'));
?>
--EXPECT--
int(1)
int(2)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php