cvs: php4 /ext/domxml php_domxml.c php_domxml.h
| From: | Christian Stocker | 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);