moriyoshi               Thu Apr 27 00:50:54 2006 UTC

  Added files:                 (Branch: PHP_5_1)
    /php-src/ext/iconv/tests    bug37176.phpt 

  Modified files:              
    /php-src/ext/iconv  iconv.c 
  Log:
  - MFH: fix bug #37176 (iconv_strpos() fails to find a string)
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/iconv/iconv.c?r1=1.124.2.7&r2=1.124.2.8&diff_format=u
Index: php-src/ext/iconv/iconv.c
diff -u php-src/ext/iconv/iconv.c:1.124.2.7 php-src/ext/iconv/iconv.c:1.124.2.8
--- php-src/ext/iconv/iconv.c:1.124.2.7 Tue Feb 28 02:22:57 2006
+++ php-src/ext/iconv/iconv.c   Thu Apr 27 00:50:54 2006
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: iconv.c,v 1.124.2.7 2006/02/28 02:22:57 helly Exp $ */
+/* $Id: iconv.c,v 1.124.2.8 2006/04/27 00:50:54 moriyoshi Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -822,18 +822,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 {
@@ -867,18 +865,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

Reply via email to