summaryrefslogtreecommitdiff
path: root/ext/dom/attr.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dom/attr.c')
-rw-r--r--ext/dom/attr.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/ext/dom/attr.c b/ext/dom/attr.c
index c5fdcfeeae..e436f180d7 100644
--- a/ext/dom/attr.c
+++ b/ext/dom/attr.c
@@ -161,7 +161,7 @@ int dom_attr_value_read(dom_object *obj, zval *retval TSRMLS_DC)
int dom_attr_value_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
+ zend_string *str;
xmlAttrPtr attrp = (xmlAttrPtr) dom_object_get_node(obj);
if (attrp == NULL) {
@@ -173,18 +173,11 @@ int dom_attr_value_write(dom_object *obj, zval *newval TSRMLS_DC)
node_list_unlink(attrp->children TSRMLS_CC);
}
- if (Z_TYPE_P(newval) != IS_STRING) {
- ZVAL_DUP(&value_copy, newval);
- newval = &value_copy;
- convert_to_string(newval);
- }
+ str = zval_get_string(newval TSRMLS_CC);
xmlNodeSetContentLen((xmlNodePtr) attrp, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
- if (newval == &value_copy) {
- zval_dtor(newval);
- }
-
+ STR_RELEASE(str);
return SUCCESS;
}