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");
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php