diff options
author | Dmitry Stogov <dmitry@php.net> | 2005-08-18 07:16:52 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2005-08-18 07:16:52 +0000 |
commit | e56f9d2eeab9cbd98c239f90ee18b227597dd103 (patch) | |
tree | 32f4c2fcd969c38c25756a1cc2558b8cc594d785 /ext/libxml/libxml.c | |
parent | 09a3c92df7f0a3a076dcf35276e283438b634a61 (diff) | |
download | php-git-e56f9d2eeab9cbd98c239f90ee18b227597dd103.tar.gz |
Unicode support
Diffstat (limited to 'ext/libxml/libxml.c')
-rw-r--r-- | ext/libxml/libxml.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c index 119c63b86d..6c9318a076 100644 --- a/ext/libxml/libxml.c +++ b/ext/libxml/libxml.c @@ -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; |