cvs: php4 /ext/domxml php_domxml.c php_domxml.h

From: Date: Wed, 09 Apr 2003 07:29:39 +0000
Subject: cvs: php4 /ext/domxml php_domxml.c php_domxml.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-20189@lists.php.net to get a copy of this message
chregu Wed Apr 9 03:29:39 2003 EDT Modified files: /php4/ext/domxml php_domxml.c php_domxml.h Log: - Fixed some memleaks when using attributes - Added attrnode->set_value() (by Rob Richards) Index: php4/ext/domxml/php_domxml.c diff -u php4/ext/domxml/php_domxml.c:1.248 php4/ext/domxml/php_domxml.c:1.249 --- php4/ext/domxml/php_domxml.c:1.248 Tue Apr 8 15:30:27 2003 +++ php4/ext/domxml/php_domxml.c Wed Apr 9 03:29:39 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_domxml.c,v 1.248 2003/04/08 19:30:27 chregu Exp $ */ +/* $Id: php_domxml.c,v 1.249 2003/04/09 07:29:39 chregu Exp $ */ /* TODO * - Support Notation Nodes @@ -513,6 +513,7 @@ PHP_FALIAS(name, domxml_attr_name, NULL) PHP_FALIAS(value, domxml_attr_value, NULL) PHP_FALIAS(specified, domxml_attr_specified, NULL) + PHP_FALIAS(set_value, domxml_attr_set_value, NULL) /* PHP_FALIAS(owner_element, domxml_attr_owner_element, NULL) */ @@ -757,6 +758,8 @@ { xmlNodePtr node = (xmlNodePtr) rsrc->ptr; if (node->parent == NULL) { + /* Attribute Nodes contain accessible children */ + node_list_wrapper_dtor(node->children, 0); node_wrapper_dtor(node); xmlFreeProp((xmlAttrPtr) node); } else { @@ -1818,12 +1821,42 @@ { zval *id; xmlAttrPtr attrp; + xmlChar *content; DOMXML_GET_THIS_OBJ(attrp, id, le_domxmlattrp); DOMXML_NO_ARGS(); - RETURN_STRING((char *) xmlNodeGetContent((xmlNodePtr) attrp), 1); + /* RETURN_STRING((char *) xmlNodeGetContent((xmlNodePtr) attrp), 1); */ + if (content = xmlNodeGetContent((xmlNodePtr) attrp)) { + RETVAL_STRING(content,1); + } else { + RETURN_EMPTY_STRING(); + } + xmlFree(content); +} +/* }}} */ + +/* {{{ proto bool domxml_attr_set_value(string content) + Set value of attribute */ +PHP_FUNCTION(domxml_attr_set_value) +{ + zval *id; + xmlAttrPtr attrp; + int content_len; + char *content; + + DOMXML_PARAM_TWO(attrp, id, le_domxmlattrp, "s", &content, &content_len); + + /* If attribute has children unlink referenced nodes + Spec indicates that content is to be overwritten and not appended + xmlNodeSetContentLen will take care of removing and freeing the rest */ + if (attrp->children) { + node_list_unlink(((xmlNodePtr) attrp) ->children); + } + xmlNodeSetContentLen((xmlNodePtr) attrp, content, content_len); + RETURN_TRUE; + } /* }}} */ @@ -1869,12 +1902,19 @@ { zval *id; xmlNodePtr nodep; + xmlChar *content; DOMXML_GET_THIS_OBJ(nodep, id, le_domxmlpip); DOMXML_NO_ARGS(); - RETURN_STRING(xmlNodeGetContent(nodep), 1); + /* RETURN_STRING(xmlNodeGetContent(nodep), 1); */ + if (content = xmlNodeGetContent(nodep)) { + RETVAL_STRING(content,1); + } else { + RETURN_EMPTY_STRING(); + } + xmlFree(content); } /* }}} */ Index: php4/ext/domxml/php_domxml.h diff -u php4/ext/domxml/php_domxml.h:1.78 php4/ext/domxml/php_domxml.h:1.79 --- php4/ext/domxml/php_domxml.h:1.78 Tue Apr 8 09:19:49 2003 +++ php4/ext/domxml/php_domxml.h Wed Apr 9 03:29:39 2003 @@ -1,4 +1,4 @@ -/* +/* +----------------------------------------------------------------------+ | PHP Version 4 | +----------------------------------------------------------------------+ @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_domxml.h,v 1.78 2003/04/08 13:19:49 chregu Exp $ */ +/* $Id: php_domxml.h,v 1.79 2003/04/09 07:29:39 chregu Exp $ */ #ifndef PHP_DOMXML_H #define PHP_DOMXML_H @@ -165,6 +165,7 @@ PHP_FUNCTION(domxml_attr_name); PHP_FUNCTION(domxml_attr_value); PHP_FUNCTION(domxml_attr_specified); +PHP_FUNCTION(domxml_attr_set_value); /* Class Element methods */ PHP_FUNCTION(domxml_elem_tagname);

« previous php.cvs (#20189) next »