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

Reply via email to