cvs: php4 /ext/standard html.c
| From: | Moriyoshi Koizumi | Date: | Thu, 08 May 2003 15:39:24 +0000 |
| Subject: | cvs: php4 /ext/standard html.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-20791@lists.php.net to get a copy of this message | ||
moriyoshi Thu May 8 11:39:24 2003 EDT
Modified files:
/php4/ext/standard html.c
Log:
I should have tested more carefully..
Index: php4/ext/standard/html.c
diff -u php4/ext/standard/html.c:1.82 php4/ext/standard/html.c:1.83
--- php4/ext/standard/html.c:1.82 Thu May 8 06:42:20 2003
+++ php4/ext/standard/html.c Thu May 8 11:39:24 2003
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: html.c,v 1.82 2003/05/08 10:42:20 moriyoshi Exp $ */
+/* $Id: html.c,v 1.83 2003/05/08 15:39:24 moriyoshi Exp $ */
/*
* HTML entity resources:
@@ -831,7 +831,8 @@
char *replaced, *ret, *p, *q, *lim, *next;
enum entity_charset charset = determine_charset(hint_charset TSRMLS_CC);
unsigned char replacement[15];
-
+ int replacement_len;
+
ret = estrdup(old);
retlen = oldlen;
if (!retlen) {
@@ -860,6 +861,7 @@
entity_length += 2;
/* When we have MBCS entities in the tables above, this will need to handle it */
+ replacement_len = 0;
switch (charset) {
case cs_8859_1:
case cs_cp1252:
@@ -869,19 +871,19 @@
case cs_cp866:
replacement[0] = k;
replacement[1] = '\0';
+ replacement_len = 1;
case cs_big5:
case cs_gb2312:
case cs_big5hkscs:
case cs_sjis:
case cs_eucjp:
- replacement[0] = (char)((unsigned int)k >> 8);
- replacement[1] = (k & 0xff);
- replacement[2] = '\0';
- break;
+ /* we cannot properly handle those multibyte encodings
+ * with php_str_to_str. skip it. */
+ continue;
case cs_utf_8:
- php_utf32_utf8(replacement, k);
+ replacement_len = php_utf32_utf8(replacement, k);
break;
default:
@@ -889,7 +891,7 @@
return 0;
}
- replaced = php_str_to_str(ret, retlen, entity, entity_length, replacement, 1, &retlen);
+ replaced = php_str_to_str(ret, retlen, entity, entity_length, replacement, replacement_len,
&retlen);
efree(ret);
ret = replaced;
}