]> granicus.if.org Git - php/commitdiff
make sure that converters are not equal to utf8 & ascii before destroying them, or...
authorAntony Dovgal <tony2001@php.net>
Tue, 20 May 2008 15:03:13 +0000 (15:03 +0000)
committerAntony Dovgal <tony2001@php.net>
Tue, 20 May 2008 15:03:13 +0000 (15:03 +0000)
Zend/zend.c

index 54c889ba2ecd0313bff72876e0c318313a6258cb..3aee2296c07a9637f62b340718e96bbc2bfaf527 100644 (file)
@@ -1004,19 +1004,29 @@ static void unicode_globals_dtor(zend_unicode_globals *unicode_globals TSRMLS_DC
        if (unicode_globals->root_search) {
                usearch_close(unicode_globals->root_search);
        }
-       if (unicode_globals->fallback_encoding_conv) {
+       if (unicode_globals->fallback_encoding_conv &&
+               unicode_globals->fallback_encoding_conv != unicode_globals->utf8_conv &&
+               unicode_globals->fallback_encoding_conv != unicode_globals->ascii_conv) {
                ucnv_close(unicode_globals->fallback_encoding_conv);
        }
-       if (unicode_globals->runtime_encoding_conv) {
+       if (unicode_globals->runtime_encoding_conv &&
+               unicode_globals->runtime_encoding_conv != unicode_globals->utf8_conv &&
+               unicode_globals->runtime_encoding_conv != unicode_globals->ascii_conv) {
                ucnv_close(unicode_globals->runtime_encoding_conv);
        }
-       if (unicode_globals->output_encoding_conv) {
+       if (unicode_globals->output_encoding_conv &&
+               unicode_globals->output_encoding_conv != unicode_globals->utf8_conv &&
+               unicode_globals->output_encoding_conv != unicode_globals->ascii_conv) {
                ucnv_close(unicode_globals->output_encoding_conv);
        }
-       if (unicode_globals->script_encoding_conv) {
+       if (unicode_globals->script_encoding_conv &&
+               unicode_globals->script_encoding_conv != unicode_globals->utf8_conv &&
+               unicode_globals->script_encoding_conv != unicode_globals->ascii_conv) {
                ucnv_close(unicode_globals->script_encoding_conv);
        }
-       if (unicode_globals->http_input_encoding_conv) {
+       if (unicode_globals->http_input_encoding_conv &&
+               unicode_globals->http_input_encoding_conv != unicode_globals->utf8_conv &&
+               unicode_globals->http_input_encoding_conv != unicode_globals->ascii_conv) {
                ucnv_close(unicode_globals->http_input_encoding_conv);
        }
        if (unicode_globals->utf8_conv) {