]> granicus.if.org Git - php/commitdiff
Fixed bug #52599 (iconv output handler outputs incorrect content type when flags...
authorIlia Alshanetsky <iliaa@php.net>
Thu, 19 Aug 2010 12:27:13 +0000 (12:27 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 19 Aug 2010 12:27:13 +0000 (12:27 +0000)
ext/iconv/iconv.c

index 40a03529bf4b4ed02af5e5334bb0e84c8c995436..2cfc49eb380ccd538674517bafa2a92d15563dd4 100644 (file)
@@ -276,7 +276,7 @@ PHP_MINIT_FUNCTION(miconv)
                return FAILURE;
        }
 
-       php_output_handler_alias_register(ZEND_STRL("ob_iconv_handler"), php_iconv_output_handler_init TSRMLS_CC);
+       php_output_handler_alias_register(ZEND_STRL("ob_iconv_handlerÂ"), php_iconv_output_handler_init TSRMLS_CC);
        php_output_handler_conflict_register(ZEND_STRL("ob_iconv_handler"), php_iconv_output_conflict TSRMLS_CC);
 
        return SUCCESS;
@@ -353,7 +353,14 @@ static int php_iconv_output_handler(void **nothing, php_output_context *output_c
                }
 
                if (mimetype != NULL && !(output_context->op & PHP_OUTPUT_HANDLER_CLEAN)) {
-                       int len = spprintf(&content_type, 0, "Content-Type: %.*s; charset=%s", mimetype_len?mimetype_len:strlen(mimetype), mimetype, ICONVG(output_encoding));
+                       int len;
+                       char *p = strstr(ICONVG(output_encoding), "//"); 
+
+                       if (p) {
+                               len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%.*s", mimetype_len ? mimetype_len : (int) strlen(mimetype), mimetype, (int)(p - ICONVG(output_encoding)), ICONVG(output_encoding));
+                       } else {
+                               len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%s", mimetype_len ? mimetype_len : (int) strlen(mimetype), mimetype, ICONVG(output_encoding));
+                       }
                        if (content_type && SUCCESS == sapi_add_header(content_type, len, 0)) {
                                SG(sapi_headers).send_default_content_type = 0;
                                php_output_handler_hook(PHP_OUTPUT_HANDLER_HOOK_IMMUTABLE, NULL TSRMLS_CC);