com php-src: Fixed SimpleXMl build with DOM: ext/dom/xml_comm on.h ext/libxml/php_libxml.h ext/simplexml/simplexml .c
| From: | Dmitry Stogov | Date: | Sun, 04 May 2014 03:46:17 +0000 |
| Subject: | com php-src: Fixed SimpleXMl build with DOM: ext/dom/xml_comm on.h ext/libxml/php_libxml.h ext/simplexml/simplexml .c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-77252@lists.php.net to get a copy of this message | ||
Commit: 41f68894366e1156191387034fc53286d9fec747
Author: Xinchen Hui <laruence@gmail.com> Sun, 4 May 2014 11:46:17 +0800
Parents: f3ccbb3c403c098dbf273f1e8122d79617034ca0
Branches: phpng
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=41f68894366e1156191387034fc53286d9fec747
Log:
Fixed SimpleXMl build with DOM
Changed paths:
M ext/dom/xml_common.h
M ext/libxml/php_libxml.h
M ext/simplexml/simplexml.c
Diff:
diff --git a/ext/dom/xml_common..h b/ext/dom/xml_common.h
index 17b3a57..49226c4 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 246994d..b79ca17 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 4ee251e..099d972 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);