]> granicus.if.org Git - php/commitdiff
fix #43477 (Error mode ignored in unicode_decode())
authorAntony Dovgal <tony2001@php.net>
Fri, 21 Mar 2008 12:09:28 +0000 (12:09 +0000)
committerAntony Dovgal <tony2001@php.net>
Fri, 21 Mar 2008 12:09:28 +0000 (12:09 +0000)
patch by Stephen Bach

Zend/tests/bug43477.phpt [new file with mode: 0644]
Zend/zend_unicode.c

diff --git a/Zend/tests/bug43477.phpt b/Zend/tests/bug43477.phpt
new file mode 100644 (file)
index 0000000..6f59e83
--- /dev/null
@@ -0,0 +1,9 @@
+--TEST--
+Bug #43477 (Unicode error mode)
+--FILE--
+<?php
+var_dump(unicode_decode(b"\xF8", 'UTF-8', U_CONV_ERROR_SKIP));
+?>
+--EXPECT--
+unicode(0) ""
+
index 9191cbb6023f5521db10709354c2d26bc3946644..7048e863c210bb367eb81005424852737c736f17 100644 (file)
@@ -47,16 +47,16 @@ void zend_set_converter_error_mode(UConverter *conv, zend_conv_direction directi
 
                case ZEND_CONV_ERROR_SKIP:
                        if (direction == ZEND_FROM_UNICODE)
-                               ucnv_setFromUCallBack(conv, UCNV_FROM_U_CALLBACK_SKIP, UCNV_SKIP_STOP_ON_ILLEGAL, NULL, NULL, &status);
+                               ucnv_setFromUCallBack(conv, UCNV_FROM_U_CALLBACK_SKIP, NULL, NULL, NULL, &status);
                        else
-                               ucnv_setToUCallBack(conv, UCNV_TO_U_CALLBACK_SKIP, UCNV_SKIP_STOP_ON_ILLEGAL, NULL, NULL, &status);
+                               ucnv_setToUCallBack(conv, UCNV_TO_U_CALLBACK_SKIP, NULL, NULL, NULL, &status);
                        break;
 
                case ZEND_CONV_ERROR_SUBST:
                        if (direction == ZEND_FROM_UNICODE)
-                               ucnv_setFromUCallBack(conv, UCNV_FROM_U_CALLBACK_SUBSTITUTE, UCNV_SUB_STOP_ON_ILLEGAL, NULL, NULL, &status);
+                               ucnv_setFromUCallBack(conv, UCNV_FROM_U_CALLBACK_SUBSTITUTE, NULL, NULL, NULL, &status);
                        else
-                               ucnv_setToUCallBack(conv, UCNV_TO_U_CALLBACK_SUBSTITUTE, UCNV_SUB_STOP_ON_ILLEGAL, NULL, NULL, &status);
+                               ucnv_setToUCallBack(conv, UCNV_TO_U_CALLBACK_SUBSTITUTE, NULL, NULL, NULL, &status);
                        break;
 
                case ZEND_CONV_ERROR_ESCAPE_UNICODE: