int dom_node_text_content_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
+ xmlNode *nodep = dom_object_get_node(obj);
- convert_to_string_copy(newval, value_copy);
- enc_str = xmlEncodeEntitiesReentrant(nodep->doc, Z_STRVAL_P(newval));
++ zend_string *str;
+ xmlChar *enc_str;
+
+ if (nodep == NULL) {
+ php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
+ return FAILURE;
+ }
+
- if (newval == &value_copy) {
- zval_dtor(newval);
- }
++ str = zval_get_string(newval);
++ enc_str = xmlEncodeEntitiesReentrant(nodep->doc, str->val);
+ xmlNodeSetContent(nodep, enc_str);
+ xmlFree(enc_str);
++ zend_string_release(str);
+
return SUCCESS;
}