summaryrefslogtreecommitdiff
path: root/ext/standard/html.c
diff options
context:
space:
mode:
authorGustavo André dos Santos Lopes <cataphract@php.net>2011-01-25 10:57:07 +0000
committerGustavo André dos Santos Lopes <cataphract@php.net>2011-01-25 10:57:07 +0000
commit4a946a91e5d0e431126e38bf53efce75d7b66324 (patch)
treeb141d35d099255f7bed91461593b2ea3f3c2e4be /ext/standard/html.c
parent05b2d22a001b817c096526d8c6d12cf0cc6be086 (diff)
downloadphp-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.c18
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);