]> granicus.if.org Git - php/commitdiff
Unicode support
authorDmitry Stogov <dmitry@php.net>
Thu, 18 Aug 2005 07:16:52 +0000 (07:16 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 18 Aug 2005 07:16:52 +0000 (07:16 +0000)
ext/libxml/libxml.c

index 119c63b86df255921d429b69b5491fe2ca918c74..6c9318a0763b4ae74ece411ef1115f4fefe77c5f 100644 (file)
@@ -797,7 +797,14 @@ int php_libxml_register_export(zend_class_entry *ce, php_libxml_export_node expo
        php_libxml_initialize();
        export_hnd.export_func = export_function;
 
-    return zend_hash_add(&php_libxml_exports, ce->name, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL);
+       if (zend_hash_add(&php_libxml_exports, ce->name, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL) == SUCCESS) {
+               UChar *uname;
+
+               uname = malloc(UBYTES(ce->name_length+1));
+               u_charsToUChars(ce->name, uname, ce->name_length+1);
+    return zend_u_hash_add(&php_libxml_exports, IS_UNICODE, uname, ce->name_length + 1, &export_hnd, sizeof(export_hnd), NULL);
+  }
+  return FAILURE;
 }
 
 PHP_LIBXML_API xmlNodePtr php_libxml_import_node(zval *object TSRMLS_DC)
@@ -811,10 +818,10 @@ PHP_LIBXML_API xmlNodePtr php_libxml_import_node(zval *object TSRMLS_DC)
                while (ce->parent != NULL) {
                        ce = ce->parent;
                }
-               if (zend_hash_find(&php_libxml_exports, ce->name, ce->name_length + 1, (void **) &export_hnd)  == SUCCESS) {
+               if (zend_u_hash_find(&php_libxml_exports, UG(unicode)?IS_UNICODE:IS_STRING, ce->name, ce->name_length + 1, (void **) &export_hnd)  == SUCCESS) {
                        node = export_hnd->export_func(object TSRMLS_CC);
                }
-    }
+       }
 
        return node;