cvs: php-src /ext/simplexml simplexml.c
| From: | Dmitry Stogov | Date: | Mon, 02 Jul 2007 11:53:08 +0000 |
| Subject: | cvs: php-src /ext/simplexml simplexml.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-45070@lists.php.net to get a copy of this message | ||
dmitry Mon Jul 2 11:53:08 2007 UTC
Modified files:
/php-src/ext/simplexml simplexml.c
Log:
Allow unicode XML
http://cvs.php.net/viewvc.cgi/php-src/ext/simplexml/simplexml.c?r1=1.237&r2=1.238&diff_format=u
Index: php-src/ext/simplexml/simplexml.c
diff -u php-src/ext/simplexml/simplexml.c:1.237 php-src/ext/simplexml/simplexml.c:1.238
--- php-src/ext/simplexml/simplexml.c:1.237 Mon Jul 2 11:36:28 2007
+++ php-src/ext/simplexml/simplexml.c Mon Jul 2 11:53:08 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: simplexml.c,v 1.237 2007/07/02 11:36:28 rrichards Exp $ */
+/* $Id: simplexml.c,v 1.238 2007/07/02 11:53:08 dmitry Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -2110,7 +2110,8 @@
SXE_METHOD(__construct)
{
php_sxe_object *sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
- char *data, *ns = NULL;
+ zstr data;
+ char *ns = NULL;
int data_len, ns_len = 0;
xmlDocPtr docp;
long options = 0;
@@ -2127,20 +2128,19 @@
if (data_type == IS_UNICODE) {
if (is_url) {
- if (php_stream_path_encode(NULL, &data, &data_len, (UChar*)data, data_len,
REPORT_ERRORS, NULL) == FAILURE) {
+ if (php_stream_path_encode(NULL, &data.s, &data_len, data.u, data_len, REPORT_ERRORS,
NULL) == FAILURE) {
zend_throw_exception(zend_exception_get_default(TSRMLS_C), "String could not be parsed as
XML", 0 TSRMLS_CC);
return;
}
} else {
- zend_throw_exception(zend_exception_get_default(TSRMLS_C), "SimpleXMLElement can only parse
a binary string", 0 TSRMLS_CC);
- return;
+ data.s = php_libxml_unicode_to_string(data.u, data_len, &data_len TSRMLS_CC);
}
}
- docp = is_url ? xmlReadFile(data, NULL, options) : xmlReadMemory(data, data_len, NULL, NULL,
options);
+ docp = is_url ? xmlReadFile(data.s, NULL, options) : xmlReadMemory(data.s, data_len, NULL, NULL,
options);
- if (is_url && data_type == IS_UNICODE) {
- efree(data);
+ if (data_type == IS_UNICODE) {
+ efree(data.s);
}
if (!docp) {
@@ -2486,7 +2486,7 @@
{
php_info_print_table_start();
php_info_print_table_header(2, "Simplexml support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 1.237 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 1.238 $");
php_info_print_table_row(2, "Schema support",
#ifdef LIBXML_SCHEMAS_ENABLED
"enabled");