rrichards Mon Jul 7 15:37:33 2003 EDT
Modified files:
/php-src/ext/dom xml_common.h text.c processinginstruction.c
php_dom.h php_dom.c notation.c node.c entity.c
element.c documenttype.c document.c
characterdata.c attr.c
Log:
implement node proxies: next phase of interop
Index: php-src/ext/dom/xml_common.h
diff -u php-src/ext/dom/xml_common.h:1.9 php-src/ext/dom/xml_common.h:1.10
--- php-src/ext/dom/xml_common.h:1.9 Fri Jun 20 10:08:56 2003
+++ php-src/ext/dom/xml_common.h Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: xml_common.h,v 1.9 2003/06/20 14:08:56 rrichards Exp $ */
+/* $Id: xml_common.h,v 1.10 2003/07/07 19:37:32 rrichards Exp $ */
#ifndef PHP_XML_COMMON_H
#define PHP_XML_COMMON_H
@@ -27,15 +27,21 @@
int refcount;
} dom_ref_obj;
+typedef struct _node_ptr {
+ xmlNodePtr node;
+ int refcount;
+ void *_private;
+} node_ptr;
+
typedef struct _node_object {
zend_object std;
- xmlNodePtr node;
+ node_ptr *node;
dom_ref_obj *document;
} node_object;
typedef struct _dom_object {
zend_object std;
- void *ptr;
+ node_ptr *ptr;
dom_ref_obj *document;
HashTable *prop_handler;
zend_object_handle handle;
@@ -63,7 +69,7 @@
#define NODE_GET_OBJ(__ptr, __id, __prtype, __intern) { \
__intern = (node_object *)zend_object_store_get_object(__id TSRMLS_CC); \
- if (!(__ptr = (__prtype)__intern->node)) { \
+ if (__intern->ptr == NULL || !(__ptr = (__prtype)__intern->ptr->node)) { \
php_error(E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\
RETURN_NULL();\
} \
Index: php-src/ext/dom/text.c
diff -u php-src/ext/dom/text.c:1.10 php-src/ext/dom/text.c:1.11
--- php-src/ext/dom/text.c:1.10 Sun Jun 15 15:58:42 2003
+++ php-src/ext/dom/text.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: text.c,v 1.10 2003/06/15 19:58:42 rrichards Exp $ */
+/* $Id: text.c,v 1.11 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -84,7 +84,7 @@
xmlNodePtr node;
xmlChar *wholetext;
- node = obj->ptr;
+ node = dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
wholetext = xmlNodeListGetString(node->doc, node, 1);
Index: php-src/ext/dom/processinginstruction.c
diff -u php-src/ext/dom/processinginstruction.c:1.3
php-src/ext/dom/processinginstruction.c:1.4
--- php-src/ext/dom/processinginstruction.c:1.3 Tue Jun 10 16:03:27 2003
+++ php-src/ext/dom/processinginstruction.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: processinginstruction.c,v 1.3 2003/06/10 20:03:27 imajes Exp $ */
+/* $Id: processinginstruction.c,v 1.4 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -85,7 +85,7 @@
{
xmlNodePtr nodep;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
ZVAL_STRING(*retval, (char *) (nodep->name), 1);
@@ -107,7 +107,7 @@
xmlNodePtr nodep;
xmlChar *content;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
@@ -127,7 +127,7 @@
{
xmlNode *nodep;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
return SUCCESS;
Index: php-src/ext/dom/php_dom.h
diff -u php-src/ext/dom/php_dom.h:1.8 php-src/ext/dom/php_dom.h:1.9
--- php-src/ext/dom/php_dom.h:1.8 Thu Jun 26 06:40:26 2003
+++ php-src/ext/dom/php_dom.h Mon Jul 7 15:37:32 2003
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dom.h,v 1.8 2003/06/26 10:40:26 rrichards Exp $ */
+/* $Id: php_dom.h,v 1.9 2003/07/07 19:37:32 rrichards Exp $ */
#ifndef PHP_DOM_H
#define PHP_DOM_H
@@ -64,12 +64,14 @@
#include "dom_fe.h"
-void php_dom_set_object(dom_object *wrapper, void *obj TSRMLS_DC);
+void php_dom_set_object(dom_object *object, xmlNodePtr obj TSRMLS_DC);
dom_object *dom_object_get_data(xmlNodePtr obj);
+xmlNodePtr dom_object_get_node(dom_object *obj);
zend_object_value dom_objects_new(zend_class_entry *class_type TSRMLS_DC);
void php_dom_throw_error(int error_code, zval **retval TSRMLS_DC);
void node_free_resource(xmlNodePtr node TSRMLS_DC);
void node_list_unlink(xmlNodePtr node TSRMLS_DC);
+int decrement_node_ptr(dom_object *object TSRMLS_DC);
int increment_document_reference(dom_object *object, xmlDocPtr docp TSRMLS_DC);
int decrement_document_reference(dom_object *object TSRMLS_DC);
xmlNsPtr dom_get_ns(char *uri, char *qName, int uri_len, int qName_len, int
*errorcode, char **localname);
@@ -88,7 +90,7 @@
#define DOM_GET_OBJ(__ptr, __id, __prtype, __intern) { \
__intern = (dom_object *)zend_object_store_get_object(__id TSRMLS_CC); \
- if (!(__ptr = (__prtype)__intern->ptr)) { \
+ if (__intern->ptr == NULL || !(__ptr = (__prtype)__intern->ptr->node)) { \
php_error(E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\
RETURN_NULL();\
} \
Index: php-src/ext/dom/php_dom.c
diff -u php-src/ext/dom/php_dom.c:1.15 php-src/ext/dom/php_dom.c:1.16
--- php-src/ext/dom/php_dom.c:1.15 Sun Jun 15 20:18:28 2003
+++ php-src/ext/dom/php_dom.c Mon Jul 7 15:37:32 2003
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_dom.c,v 1.15 2003/06/16 00:18:28 helly Exp $ */
+/* $Id: php_dom.c,v 1.16 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -74,7 +74,7 @@
};
-/* {{{ void increment_document_reference(dom_object *object) */
+/* {{{ int increment_document_reference(dom_object *object) */
int increment_document_reference(dom_object *object, xmlDocPtr docp TSRMLS_DC) {
int ret_refcount = -1;
@@ -82,16 +82,17 @@
object->document->refcount++;
ret_refcount = object->document->refcount;
} else if (docp != NULL) {
+ ret_refcount = 1;
object->document = emalloc(sizeof(dom_ref_obj));
object->document->ptr = docp;
- object->document->refcount = 1;
+ object->document->refcount = ret_refcount;
}
return ret_refcount;
}
/* }}} end increment_document_reference */
-/* {{{ void decrement_document_reference(dom_object *object) */
+/* {{{ int decrement_document_reference(dom_object *object) */
int decrement_document_reference(dom_object *object TSRMLS_DC) {
int ret_refcount = -1;
@@ -104,46 +105,93 @@
object->document->ptr = NULL;
}
efree(object->document);
- object->document = NULL;
}
+ object->document = NULL;
}
return ret_refcount;
}
/* }}} end decrement_document_reference */
+/* {{{ int decrement_node_ptr(dom_object *object) */
+int decrement_node_ptr(dom_object *object TSRMLS_DC) {
+ int ret_refcount = -1;
+
+ if (object != NULL && object->ptr != NULL) {
+ ret_refcount = --object->ptr->refcount;
+ if (ret_refcount == 0) {
+ if (object->ptr->node != NULL) {
+ object->ptr->node->_private = NULL;
+ }
+ efree(object->ptr);
+ }
+ object->ptr = NULL;
+ }
+
+ return ret_refcount;
+}
+/* }}} end decrement_node_ptr */
+
+/* {{{ xmlNodePtr dom_object_get_node(dom_object *obj) */
+xmlNodePtr dom_object_get_node(dom_object *obj)
+{
+ if (obj->ptr != NULL) {
+ return obj->ptr->node;
+ } else {
+ return NULL;
+ }
+}
+/* }}} end dom_object_get_node */
+
/* {{{ dom_object_set_data */
static void dom_object_set_data(xmlNodePtr obj, dom_object *wrapper TSRMLS_DC)
{
-
- obj->_private = wrapper;
+ if (wrapper == NULL) {
+ obj->_private = NULL;
+ } else {
+ obj->_private = wrapper->ptr;
+ }
}
/* }}} end dom_object_set_data */
-/* {{{ dom_object_get_data */
+/* {{{ dom_object *dom_object_get_data(xmlNodePtr obj) */
dom_object *dom_object_get_data(xmlNodePtr obj)
{
- return (dom_object *) obj->_private;
+ if (obj->_private != NULL) {
+ return (dom_object *) ((node_ptr *) obj->_private)->_private;
+ } else {
+ return NULL;
+ }
}
/* }}} end dom_object_get_data */
/* {{{ php_dom_clear_object */
static void php_dom_clear_object(dom_object *object TSRMLS_DC)
{
- object->ptr = NULL;
if (object->prop_handler) {
object->prop_handler = NULL;
}
+ decrement_node_ptr(object TSRMLS_CC);
decrement_document_reference(object TSRMLS_CC);
- object->document = NULL;
}
-/* }}} end dom_object_get_data */
+/* }}} end php_dom_clear_object */
-/* {{{ php_dom_set_object */
-void php_dom_set_object(dom_object *object, void *obj TSRMLS_DC)
+/* {{{ void php_dom_set_object(dom_object *object, xmlNodePtr obj TSRMLS_DC) */
+void php_dom_set_object(dom_object *object, xmlNodePtr obj TSRMLS_DC)
{
- object->ptr = obj;
- dom_object_set_data(obj, object TSRMLS_CC);
+ if (obj->_private == NULL) {
+ object->ptr = emalloc(sizeof(node_ptr));
+ object->ptr->node = obj;
+ object->ptr->refcount = 1;
+ object->ptr->_private = object;
+ dom_object_set_data(obj, object TSRMLS_CC);
+ } else if (object->ptr == NULL) {
+ object->ptr = obj->_private;
+ object->ptr->refcount++;
+ if (object->ptr->_private == NULL) {
+ object->ptr->_private = object;
+ }
+ }
}
/* }}} end php_dom_set_object */
@@ -154,7 +202,6 @@
wrapper = dom_object_get_data(nodep);
if (wrapper != NULL ) {
- dom_object_set_data(nodep, NULL TSRMLS_CC);
php_dom_clear_object(wrapper TSRMLS_CC);
}
}
@@ -635,6 +682,9 @@
void dom_node_free(xmlNodePtr node)
{
if(node) {
+ if (node->_private != NULL) {
+ ((node_ptr *) node->_private)->node = NULL;
+ }
switch (node->type) {
case XML_ATTRIBUTE_NODE:
xmlFreeProp((xmlAttrPtr) node);
@@ -686,9 +736,6 @@
/* {{{ node_free_resource */
void node_free_resource(xmlNodePtr node TSRMLS_DC)
{
- xmlDtdPtr extSubset, intSubset;
- xmlDocPtr docp;
-
if (!node) {
return;
}
@@ -696,34 +743,7 @@
switch (node->type) {
case XML_DOCUMENT_NODE:
case XML_HTML_DOCUMENT_NODE:
- {
- docp = (xmlDocPtr) node;
- if (docp->ids != NULL) xmlFreeIDTable((xmlIDTablePtr)
docp->ids);
- docp->ids = NULL;
- if (docp->refs != NULL) xmlFreeRefTable((xmlRefTablePtr)
docp->refs);
- docp->refs = NULL;
- extSubset = docp->extSubset;
- intSubset = docp->intSubset;
- if (intSubset == extSubset)
- extSubset = NULL;
- if (extSubset != NULL) {
- node_free_list((xmlNodePtr) extSubset->children
TSRMLS_CC);
- xmlUnlinkNode((xmlNodePtr) docp->extSubset);
- docp->extSubset = NULL;
- xmlFreeDtd(extSubset);
- }
- if (intSubset != NULL) {
- node_free_list((xmlNodePtr) intSubset->children
TSRMLS_CC);
- xmlUnlinkNode((xmlNodePtr) docp->intSubset);
- docp->intSubset = NULL;
- xmlFreeDtd(intSubset);
- }
-
- node_free_list(node->children TSRMLS_CC);
- node_free_list((xmlNodePtr) node->properties TSRMLS_CC);
- xmlFreeDoc((xmlDoc *) node);
break;
- }
default:
if (node->parent == NULL) {
node_free_list((xmlNodePtr) node->children TSRMLS_CC);
@@ -739,13 +759,7 @@
node_free_list((xmlNodePtr)
node->properties TSRMLS_CC);
}
dom_unregister_node(node TSRMLS_CC);
- switch (node->type) {
- case XML_ATTRIBUTE_NODE:
- xmlFreeProp((xmlAttrPtr) node);
- break;
- default:
- xmlFreeNode((xmlNode *) node);
- }
+ dom_node_free(node);
} else {
dom_unregister_node(node TSRMLS_CC);
}
@@ -769,15 +783,12 @@
zend_hash_destroy(intern->std.properties);
FREE_HASHTABLE(intern->std.properties);
- if (intern->ptr) {
- if (((xmlNodePtr) intern->ptr)->type != XML_DOCUMENT_NODE &&
((xmlNodePtr) intern->ptr)->type != XML_HTML_DOCUMENT_NODE) {
- node_free_resource(intern->ptr TSRMLS_CC);
+ if (intern->ptr != NULL && intern->ptr->node != NULL) {
+ if (((xmlNodePtr) intern->ptr->node)->type != XML_DOCUMENT_NODE &&
((xmlNodePtr) intern->ptr->node)->type != XML_HTML_DOCUMENT_NODE) {
+ node_free_resource(dom_object_get_node(intern) TSRMLS_CC);
} else {
+ decrement_node_ptr(intern TSRMLS_CC);
retcount = decrement_document_reference(intern TSRMLS_CC);
- if (retcount != 0) {
- dom_object_set_data(intern->ptr, NULL TSRMLS_CC);
- }
- intern->document = NULL;
}
intern->ptr = NULL;
}
Index: php-src/ext/dom/notation.c
diff -u php-src/ext/dom/notation.c:1.2 php-src/ext/dom/notation.c:1.3
--- php-src/ext/dom/notation.c:1.2 Tue Jun 10 16:03:27 2003
+++ php-src/ext/dom/notation.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: notation.c,v 1.2 2003/06/10 20:03:27 imajes Exp $ */
+/* $Id: notation.c,v 1.3 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -49,7 +49,7 @@
{
xmlNotationPtr nodep;
- nodep = obj->ptr;
+ nodep = (xmlNotationPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
if (nodep->PublicID) {
ZVAL_STRING(*retval, (char *) (nodep->PublicID), 1);
@@ -73,7 +73,7 @@
{
xmlNotationPtr nodep;
- nodep = obj->ptr;
+ nodep = (xmlNotationPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
if (nodep->SystemID) {
ZVAL_STRING(*retval, (char *) (nodep->PublicID), 1);
Index: php-src/ext/dom/node.c
diff -u php-src/ext/dom/node.c:1.6 php-src/ext/dom/node.c:1.7
--- php-src/ext/dom/node.c:1.6 Sun Jun 15 15:58:42 2003
+++ php-src/ext/dom/node.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: node.c,v 1.6 2003/06/15 19:58:42 rrichards Exp $ */
+/* $Id: node.c,v 1.7 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -66,7 +66,7 @@
xmlNode *nodep;
char *str = NULL;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
switch (nodep->type) {
case XML_ATTRIBUTE_NODE:
@@ -131,7 +131,7 @@
xmlNode *nodep;
char *str = NULL;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
/* TODO: Element node is invalid for this property -
currently here as a convience method while developing */
switch (nodep->type) {
@@ -166,7 +166,7 @@
{
xmlNode *nodep;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
switch (nodep->type) {
case XML_ATTRIBUTE_NODE:
@@ -199,7 +199,7 @@
{
xmlNode *nodep;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
ZVAL_LONG(*retval, nodep->type);
@@ -220,7 +220,7 @@
xmlNode *nodep, *nodeparent;
int ret;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
nodeparent = nodep->parent;
if (!nodeparent) {
@@ -249,7 +249,8 @@
{
xmlNodePtr nodep, last;
int ret;
- nodep = obj->ptr;
+
+ nodep = dom_object_get_node(obj);
if ((nodep->type == XML_DOCUMENT_NODE) || (nodep->type ==
XML_HTML_DOCUMENT_NODE)) {
last = ((xmlDoc *) nodep)->children;
@@ -285,8 +286,7 @@
xmlNode *nodep, *first;
int ret;
- nodep = obj->ptr;
-
+ nodep = dom_object_get_node(obj);
first = nodep->children;
if (!first) {
@@ -316,7 +316,7 @@
xmlNode *nodep, *last;
int ret;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
last = nodep->last;
if (!last) {
@@ -346,7 +346,7 @@
xmlNode *nodep, *prevsib;
int ret;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
prevsib = nodep->prev;
if (!prevsib) {
@@ -376,7 +376,7 @@
xmlNode *nodep, *nextsib;
int ret;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
nextsib = nodep->next;
if (!nextsib) {
@@ -405,9 +405,9 @@
{
xmlNodePtr nodep;
xmlAttr *attr;
-
int ret;
- nodep = obj->ptr;
+
+ nodep = dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
@@ -444,7 +444,7 @@
xmlDocPtr docp;
int ret;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
if (nodep->type == XML_DOCUMENT_NODE || nodep->type == XML_HTML_DOCUMENT_NODE)
{
ALLOC_ZVAL(*retval);
@@ -480,7 +480,7 @@
xmlNode *nodep;
char *str = NULL;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
switch (nodep->type) {
case XML_ELEMENT_NODE:
@@ -520,7 +520,7 @@
xmlNsPtr ns;
char *str = NULL;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
switch (nodep->type) {
case XML_ELEMENT_NODE:
@@ -556,7 +556,7 @@
char *strURI;
char *prefix;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
switch (nodep->type) {
case XML_ELEMENT_NODE:
@@ -617,7 +617,8 @@
int dom_node_local_name_read(dom_object *obj, zval **retval TSRMLS_DC)
{
xmlNode *nodep;
- nodep = obj->ptr;
+
+ nodep = dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
@@ -661,7 +662,7 @@
xmlNode *nodep;
char *str = NULL;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
str = xmlNodeGetContent(nodep);
@@ -767,7 +768,8 @@
if (lastattr != (xmlAttrPtr) child) {
xmlUnlinkNode((xmlNodePtr) lastattr);
node_free_resource((xmlNodePtr) lastattr
TSRMLS_CC);
- xmlFreeProp(lastattr);
+ /* Freed above
+ xmlFreeProp(lastattr); */
} else {
DOM_RET_OBJ(rv, child, &ret, intern);
return;
@@ -808,7 +810,8 @@
if (lastattr != (xmlAttrPtr) child) {
xmlUnlinkNode((xmlNodePtr) lastattr);
node_free_resource((xmlNodePtr) lastattr
TSRMLS_CC);
- xmlFreeProp(lastattr);
+ /* Freed above
+ xmlFreeProp(lastattr); */
} else {
DOM_RET_OBJ(rv, child, &ret, intern);
return;
@@ -1012,7 +1015,8 @@
if (lastattr != (xmlAttrPtr) child) {
xmlUnlinkNode((xmlNodePtr) lastattr);
node_free_resource((xmlNodePtr) lastattr TSRMLS_CC);
- xmlFreeProp(lastattr);
+ /* Freed above
+ xmlFreeProp(lastattr); */
}
}
} else if (child->type == XML_DOCUMENT_FRAG_NODE) {
Index: php-src/ext/dom/entity.c
diff -u php-src/ext/dom/entity.c:1.2 php-src/ext/dom/entity.c:1.3
--- php-src/ext/dom/entity.c:1.2 Tue Jun 10 16:03:27 2003
+++ php-src/ext/dom/entity.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: entity.c,v 1.2 2003/06/10 20:03:27 imajes Exp $ */
+/* $Id: entity.c,v 1.3 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -48,7 +48,8 @@
int dom_entity_public_id_read(dom_object *obj, zval **retval TSRMLS_DC)
{
xmlEntity *nodep;
- nodep = obj->ptr;
+
+ nodep = (xmlEntity *) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
if (nodep->etype != XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) {
@@ -72,7 +73,8 @@
int dom_entity_system_id_read(dom_object *obj, zval **retval TSRMLS_DC)
{
xmlEntity *nodep;
- nodep = obj->ptr;
+
+ nodep = (xmlEntity *) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
if (nodep->etype != XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) {
@@ -98,7 +100,7 @@
xmlEntity *nodep;
char *content;
- nodep = obj->ptr;
+ nodep = (xmlEntity *) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
if (nodep->etype != XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) {
Index: php-src/ext/dom/element.c
diff -u php-src/ext/dom/element.c:1.5 php-src/ext/dom/element.c:1.6
--- php-src/ext/dom/element.c:1.5 Sun Jun 15 15:58:42 2003
+++ php-src/ext/dom/element.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: element.c,v 1.5 2003/06/15 19:58:42 rrichards Exp $ */
+/* $Id: element.c,v 1.6 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -107,7 +107,7 @@
{
xmlNodePtr nodep;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
ZVAL_STRING(*retval, (char *) (nodep->name), 1);
return SUCCESS;
@@ -296,7 +296,7 @@
if ((oldobj = dom_object_get_data((xmlNodePtr) existattrp)) == NULL) {
xmlUnlinkNode((xmlNodePtr) existattrp);
} else {
- if (oldobj->ptr == attrp) {
+ if (oldobj->ptr->node == (xmlNodePtr) attrp) {
RETURN_NULL();
}
xmlUnlinkNode((xmlNodePtr) existattrp);
@@ -637,7 +637,7 @@
if ((oldobj = dom_object_get_data((xmlNodePtr) existattrp)) == NULL) {
xmlUnlinkNode((xmlNodePtr) existattrp);
} else {
- if (oldobj->ptr == attrp) {
+ if (oldobj->ptr->node == (xmlNodePtr) attrp) {
RETURN_NULL();
}
xmlUnlinkNode((xmlNodePtr) existattrp);
Index: php-src/ext/dom/documenttype.c
diff -u php-src/ext/dom/documenttype.c:1.3 php-src/ext/dom/documenttype.c:1.4
--- php-src/ext/dom/documenttype.c:1.3 Tue Jun 10 16:03:27 2003
+++ php-src/ext/dom/documenttype.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: documenttype.c,v 1.3 2003/06/10 20:03:27 imajes Exp $ */
+/* $Id: documenttype.c,v 1.4 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -67,7 +67,7 @@
{
xmlDtdPtr dtdptr;
- dtdptr = obj->ptr;
+ dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
ZVAL_STRING(*retval, (char *) (dtdptr->name), 1);
@@ -91,7 +91,7 @@
xmlNode *nodep = NULL;
int ret, htsize, index = 0;
- doctypep = obj->ptr;
+ doctypep = (xmlDtdPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
array_init(*retval);
@@ -137,7 +137,7 @@
xmlNode *nodep = NULL;
int ret, htsize, index = 0;
- doctypep = obj->ptr;
+ doctypep = (xmlDtdPtr) dom_object_get_node(obj);
MAKE_STD_ZVAL(*retval);
array_init(*retval);
@@ -179,7 +179,7 @@
{
xmlDtdPtr dtdptr;
- dtdptr = obj->ptr;
+ dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
if (dtdptr->ExternalID) {
@@ -204,7 +204,7 @@
{
xmlDtdPtr dtdptr;
- dtdptr = obj->ptr;
+ dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
if (dtdptr->SystemID) {
@@ -232,7 +232,7 @@
xmlOutputBuffer *buff = NULL;
xmlChar *strintsubset;
- dtdptr = obj->ptr;
+ dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
Index: php-src/ext/dom/document.c
diff -u php-src/ext/dom/document.c:1.8 php-src/ext/dom/document.c:1.9
--- php-src/ext/dom/document.c:1.8 Tue Jul 1 15:28:30 2003
+++ php-src/ext/dom/document.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: document.c,v 1.8 2003/07/01 19:28:30 rrichards Exp $ */
+/* $Id: document.c,v 1.9 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -107,8 +107,7 @@
xmlDtdPtr dtdptr;
int ret;
- docp = obj->ptr;
-
+ docp = (xmlDocPtr) dom_object_get_node(obj);
dtdptr = xmlGetIntSubset(docp);
if (!dtdptr) {
@@ -155,7 +154,7 @@
xmlNode *root;
int ret;
- docp = obj->ptr;
+ docp = (xmlDocPtr) dom_object_get_node(obj);
root = xmlDocGetRootElement(docp);
if (!root) {
@@ -204,7 +203,7 @@
xmlDoc *docp;
char *encoding;
- docp = obj->ptr;
+ docp = (xmlDocPtr) dom_object_get_node(obj);
encoding = (char *) docp->encoding;
ALLOC_ZVAL(*retval);
@@ -253,7 +252,7 @@
xmlDoc *docp;
int standalone;
- docp = obj->ptr;
+ docp = (xmlDocPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
standalone = docp->standalone;
ZVAL_BOOL(*retval, standalone);
@@ -266,7 +265,7 @@
xmlDoc *docp;
int standalone;
- docp = obj->ptr;
+ docp = (xmlDocPtr) dom_object_get_node(obj);
standalone = Z_LVAL_P(newval);
if (standalone > 0) {
docp->standalone = 1;
@@ -295,7 +294,7 @@
xmlDoc *docp;
char *version;
- docp = obj->ptr;
+ docp = (xmlDocPtr) dom_object_get_node(obj);
version = (char *) docp->version;
ALLOC_ZVAL(*retval);
@@ -312,7 +311,7 @@
{
xmlDoc *docp;
- docp = obj->ptr;
+ docp = (xmlDocPtr) dom_object_get_node(obj);
if (docp->version != NULL) {
xmlFree((xmlChar *) docp->version );
}
@@ -357,7 +356,7 @@
xmlDoc *docp;
char *url;
- docp = obj->ptr;
+ docp = (xmlDocPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
url = (char *) docp->URL;
@@ -374,7 +373,7 @@
{
xmlDoc *docp;
- docp = obj->ptr;
+ docp = (xmlDocPtr) dom_object_get_node(obj);
if (docp->URL != NULL) {
xmlFree((xmlChar *) docp->URL);
}
@@ -975,6 +974,7 @@
if (intern != NULL) {
olddoc = (xmlDocPtr)intern->ptr;
if (olddoc != NULL) {
+ decrement_node_ptr(intern TSRMLS_CC);
refcount = decrement_document_reference(intern TSRMLS_CC);
if (refcount != 0) {
olddoc->_private = NULL;
@@ -983,7 +983,7 @@
intern->document = NULL;
increment_document_reference(intern, docp TSRMLS_CC);
- php_dom_set_object(intern, docp TSRMLS_CC);
+ php_dom_set_object(intern, (xmlNodePtr) docp TSRMLS_CC);
}
add_property_bool(id, "formatOutput", 0);
@@ -1019,6 +1019,7 @@
if (intern != NULL) {
docp = (xmlDocPtr)intern->ptr;
if (docp != NULL) {
+ decrement_node_ptr(intern TSRMLS_CC);
refcount = decrement_document_reference(intern
TSRMLS_CC);
if (refcount != 0) {
docp->_private = NULL;
@@ -1028,7 +1029,7 @@
increment_document_reference(intern, newdoc TSRMLS_CC);
}
- php_dom_set_object(intern, newdoc TSRMLS_CC);
+ php_dom_set_object(intern, (xmlNodePtr) newdoc TSRMLS_CC);
RETURN_TRUE;
} else {
@@ -1064,6 +1065,7 @@
if (intern != NULL) {
docp = (xmlDocPtr)intern->ptr;
if (docp != NULL) {
+ decrement_node_ptr(intern TSRMLS_CC);
refcount = decrement_document_reference(intern
TSRMLS_CC);
if (refcount != 0) {
docp->_private = NULL;
@@ -1074,7 +1076,7 @@
increment_document_reference(intern, newdoc TSRMLS_CC);
}
- php_dom_set_object(intern, newdoc TSRMLS_CC);
+ php_dom_set_object(intern, (xmlNodePtr) newdoc TSRMLS_CC);
RETURN_TRUE;
} else {
Index: php-src/ext/dom/characterdata.c
diff -u php-src/ext/dom/characterdata.c:1.5 php-src/ext/dom/characterdata.c:1.6
--- php-src/ext/dom/characterdata.c:1.5 Thu Jun 12 13:04:28 2003
+++ php-src/ext/dom/characterdata.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: characterdata.c,v 1.5 2003/06/12 17:04:28 rrichards Exp $ */
+/* $Id: characterdata.c,v 1.6 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -53,7 +53,7 @@
xmlNodePtr nodep;
xmlChar *content;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
@@ -72,7 +72,7 @@
{
xmlNode *nodep;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
return SUCCESS;
}
@@ -104,7 +104,7 @@
xmlChar *content;
long length;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
Index: php-src/ext/dom/attr.c
diff -u php-src/ext/dom/attr.c:1.3 php-src/ext/dom/attr.c:1.4
--- php-src/ext/dom/attr.c:1.3 Tue Jun 10 16:03:27 2003
+++ php-src/ext/dom/attr.c Mon Jul 7 15:37:32 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: attr.c,v 1.3 2003/06/10 20:03:27 imajes Exp $ */
+/* $Id: attr.c,v 1.4 2003/07/07 19:37:32 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -89,7 +89,7 @@
{
xmlAttrPtr attrp;
- attrp = obj->ptr;
+ attrp = (xmlAttrPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
ZVAL_STRING(*retval, (char *) (attrp->name), 1);
@@ -127,7 +127,7 @@
xmlAttrPtr attrp;
xmlChar *content;
- attrp = obj->ptr;
+ attrp = (xmlAttrPtr) dom_object_get_node(obj);
ALLOC_ZVAL(*retval);
@@ -148,7 +148,7 @@
{
xmlAttrPtr attrp;
- attrp = obj->ptr;
+ attrp = (xmlAttrPtr) dom_object_get_node(obj);
if (attrp->children) {
node_list_unlink(attrp->children TSRMLS_CC);
@@ -172,7 +172,7 @@
xmlNodePtr nodep, nodeparent;
int ret;
- nodep = obj->ptr;
+ nodep = dom_object_get_node(obj);
nodeparent = nodep->parent;
if (!nodeparent) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php