diff options
author | Gustavo André dos Santos Lopes <cataphract@php.net> | 2011-01-25 10:57:07 +0000 |
---|---|---|
committer | Gustavo André dos Santos Lopes <cataphract@php.net> | 2011-01-25 10:57:07 +0000 |
commit | 4a946a91e5d0e431126e38bf53efce75d7b66324 (patch) | |
tree | b141d35d099255f7bed91461593b2ea3f3c2e4be /ext/standard/html.c | |
parent | 05b2d22a001b817c096526d8c6d12cf0cc6be086 (diff) | |
download | php-git-4a946a91e5d0e431126e38bf53efce75d7b66324.tar.gz |
- Fixed CHARSET_UNICODE_COMPAT (ISO-8859-1 is compatible in the relevant sense).
- Fixed usage of zend_multibyte_get_internal_encoding (its return cannot be
cast to char*).
- Change tests to reflect that charset detection now relies on
internal_encoding, not on current_internal_encoding.
NOTE: This fixes the changes in rev 306077, but it remains that that change
introduced a BC break. I assumed it was intentional
Diffstat (limited to 'ext/standard/html.c')
-rw-r--r-- | ext/standard/html.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/ext/standard/html.c b/ext/standard/html.c index 510d2f565e..1d989f818e 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -367,6 +367,7 @@ static enum entity_charset determine_charset(char *charset_hint TSRMLS_DC) int i; enum entity_charset charset = cs_utf_8; int len = 0; + const zend_encoding *zenc; /* Default is now UTF-8 */ if (charset_hint == NULL) @@ -376,9 +377,20 @@ static enum entity_charset determine_charset(char *charset_hint TSRMLS_DC) goto det_charset; } - charset_hint = (char*)zend_multibyte_get_internal_encoding(TSRMLS_C); - if (charset_hint != NULL && (len=strlen(charset_hint)) != 0) { - goto det_charset; + zenc = zend_multibyte_get_internal_encoding(TSRMLS_C); + if (zenc != NULL) { + charset_hint = zend_multibyte_get_encoding_name(zenc); + if (charset_hint != NULL && (len=strlen(charset_hint)) != 0) { + if ((len == 4) /* sizeof (none|auto|pass) */ && + (!memcmp("pass", charset_hint, 4) || + !memcmp("auto", charset_hint, 4) || + !memcmp("auto", charset_hint, 4))) { + charset_hint = NULL; + len = 0; + } else { + goto det_charset; + } + } } charset_hint = SG(default_charset); |