From: Xinchen Hui Date: Sun, 4 May 2014 03:46:17 +0000 (+0800) Subject: Fixed SimpleXMl build with DOM X-Git-Tag: POST_PHPNG_MERGE~412^2~19 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=41f68894366e1156191387034fc53286d9fec747;p=php Fixed SimpleXMl build with DOM --- diff --git a/ext/dom/xml_common.h b/ext/dom/xml_common.h index 17b3a5733e..49226c459c 100644 --- a/ext/dom/xml_common.h +++ b/ext/dom/xml_common.h @@ -66,7 +66,7 @@ PHP_DOM_EXPORT xmlNodePtr dom_object_get_node(dom_object *obj); (const xmlChar *) "http://www.w3.org/2000/xmlns/" #define NODE_GET_OBJ(__ptr, __id, __prtype, __intern) { \ - __intern = (php_libxml_node_object *)zend_object_store_get_object(__id TSRMLS_CC); \ + __intern = Z_LIBXML_NODE_P(__id); \ if (__intern->node == NULL || !(__ptr = (__prtype)__intern->node->node)) { \ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\ RETURN_NULL();\ @@ -74,7 +74,7 @@ PHP_DOM_EXPORT xmlNodePtr dom_object_get_node(dom_object *obj); } #define DOC_GET_OBJ(__ptr, __id, __prtype, __intern) { \ - __intern = (php_libxml_node_object *)zend_object_store_get_object(__id TSRMLS_CC); \ + __intern = Z_LIBXML_NODE_P(__id); \ if (__intern->document != NULL) { \ if (!(__ptr = (__prtype)__intern->document->ptr)) { \ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\ diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h index 246994ddf8..b79ca17556 100644 --- a/ext/libxml/php_libxml.h +++ b/ext/libxml/php_libxml.h @@ -81,6 +81,13 @@ typedef struct _php_libxml_node_object { zend_object std; } php_libxml_node_object; + +static inline php_libxml_node_object *php_libxml_node_fetch_object(zend_object *obj) { + return (php_libxml_node_object *)((char*)(obj) - XtOffsetOf(php_libxml_node_object, std)); +} + +#define Z_LIBXML_NODE_P(zv) php_libxml_node_fetch_object(Z_OBJ_P((zv))) + typedef void * (*php_libxml_export_node) (zval *object TSRMLS_DC); PHP_LIBXML_API int php_libxml_increment_node_ptr(php_libxml_node_object *object, xmlNodePtr node, void *private_data TSRMLS_DC); diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 4ee251ecf8..099d9722bd 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -2398,7 +2398,7 @@ PHP_FUNCTION(simplexml_import_dom) return; } - object = (php_libxml_node_object *) ((char *) Z_OBJ_P(node) - Z_OBJ_HT_P(node)->offset); + object = Z_LIBXML_NODE_P(node); nodep = php_libxml_import_node(node TSRMLS_CC);