From: Ilia Alshanetsky Date: Thu, 19 Aug 2010 12:27:13 +0000 (+0000) Subject: Fixed bug #52599 (iconv output handler outputs incorrect content type when flags... X-Git-Tag: php-5.4.0alpha1~191^2~1069 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e9735b92a439176b321865bd10f8098bacee0f8c;p=php Fixed bug #52599 (iconv output handler outputs incorrect content type when flags are used). --- diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 40a03529bf..2cfc49eb38 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -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);