summaryrefslogtreecommitdiff
path: root/ext/dom/document.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dom/document.c')
-rw-r--r--ext/dom/document.c370
1 files changed, 85 insertions, 285 deletions
diff --git a/ext/dom/document.c b/ext/dom/document.c
index 73ca6a95b3..c27d766393 100644
--- a/ext/dom/document.c
+++ b/ext/dom/document.c
@@ -280,7 +280,7 @@ readonly=yes
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-87CD092
Since:
*/
-int dom_document_document_element_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_document_element_read(dom_object *obj, zval *retval TSRMLS_DC)
{
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
xmlNode *root;
@@ -306,7 +306,7 @@ int dom_document_document_element_read(dom_object *obj, zval **retval TSRMLS_DC)
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-encoding
Since: DOM Level 3
*/
-int dom_document_encoding_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_encoding_read(dom_object *obj, zval *retval TSRMLS_DC)
{
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
char *encoding;
@@ -338,7 +338,7 @@ int dom_document_encoding_write(dom_object *obj, zval *newval TSRMLS_DC)
return FAILURE;
}
- str = zval_get_string(newval TSMLRS_CC);
+ str = zval_get_string(newval TSRMLS_CC);
handler = xmlFindCharEncodingHandler(Z_STRVAL_P(newval));
@@ -347,7 +347,7 @@ int dom_document_encoding_write(dom_object *obj, zval *newval TSRMLS_DC)
if (docp->encoding != NULL) {
xmlFree((xmlChar *)docp->encoding);
}
- docp->encoding = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval));
+ docp->encoding = xmlStrdup((const xmlChar *) str->val);
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Document Encoding");
}
@@ -363,10 +363,9 @@ readonly=no
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-standalone
Since: DOM Level 3
*/
-int dom_document_standalone_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_standalone_read(dom_object *obj, zval *retval TSRMLS_DC)
{
xmlDoc *docp;
- int standalone;
docp = (xmlDocPtr) dom_object_get_node(obj);
@@ -375,47 +374,22 @@ int dom_document_standalone_read(dom_object *obj, zval **retval TSRMLS_DC)
return FAILURE;
}
- ALLOC_ZVAL(*retval);
- standalone = docp->standalone;
- ZVAL_BOOL(*retval, standalone);
-
+ ZVAL_BOOL(retval, docp->standalone);
return SUCCESS;
}
int dom_document_standalone_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- xmlDoc *docp;
+ xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
int standalone;
- docp = (xmlDocPtr) dom_object_get_node(obj);
-
if (docp == NULL) {
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
return FAILURE;
}
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_long(newval);
-
- standalone = Z_LVAL_P(newval);
- if (standalone > 0) {
- docp->standalone = 1;
- }
- else if (standalone < 0) {
- docp->standalone = -1;
- }
- else {
- docp->standalone = 0;
- }
-
- if (newval == &value_copy) {
- zval_dtor(newval);
- }
+ standalone = zval_get_long(newval TSRMLS_CC);
+ docp->standalone = ZEND_NORMALIZE_BOOL(standalone);
return SUCCESS;
}
@@ -427,25 +401,22 @@ readonly=no
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-version
Since: DOM Level 3
*/
-int dom_document_version_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_version_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- xmlDoc *docp;
+ xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
char *version;
- docp = (xmlDocPtr) dom_object_get_node(obj);
-
if (docp == NULL) {
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
return FAILURE;
}
version = (char *) docp->version;
- ALLOC_ZVAL(*retval);
if (version != NULL) {
- ZVAL_STRING(*retval, version, 1);
+ ZVAL_STRING(retval, version);
} else {
- ZVAL_NULL(*retval);
+ ZVAL_NULL(retval);
}
return SUCCESS;
@@ -453,10 +424,8 @@ int dom_document_version_read(dom_object *obj, zval **retval TSRMLS_DC)
int dom_document_version_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- xmlDoc *docp;
-
- docp = (xmlDocPtr) dom_object_get_node(obj);
+ xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
+ zend_string *str;
if (docp == NULL) {
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
@@ -467,21 +436,11 @@ int dom_document_version_write(dom_object *obj, zval *newval TSRMLS_DC)
xmlFree((xmlChar *) docp->version );
}
- if (newval->type != IS_STRING) {
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_string(newval);
- }
-
- docp->version = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval));
+ str = zval_get_string(newval TSRMLS_CC);
- if (newval == &value_copy) {
- zval_dtor(newval);
- }
+ docp->version = xmlStrdup((const xmlChar *) str->val);
+ STR_RELEASE(str);
return SUCCESS;
}
@@ -492,39 +451,23 @@ readonly=no
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-strictErrorChecking
Since: DOM Level 3
*/
-int dom_document_strict_error_checking_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_strict_error_checking_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- dom_doc_propsptr doc_prop;
-
- ALLOC_ZVAL(*retval);
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- ZVAL_BOOL(*retval, doc_prop->stricterror);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ ZVAL_BOOL(retval, doc_prop->stricterror);
} else {
- ZVAL_FALSE(*retval);
+ ZVAL_FALSE(retval);
}
return SUCCESS;
}
int dom_document_strict_error_checking_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- dom_doc_propsptr doc_prop;
-
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- doc_prop->stricterror = Z_LVAL_P(newval);
- }
-
- if (newval == &value_copy) {
- zval_dtor(newval);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ doc_prop->stricterror = zend_is_true(newval TSRMLS_CC);
}
return SUCCESS;
@@ -535,39 +478,22 @@ int dom_document_strict_error_checking_write(dom_object *obj, zval *newval TSRML
/* {{{ formatOutput boolean
readonly=no
*/
-int dom_document_format_output_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_format_output_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- dom_doc_propsptr doc_prop;
-
- ALLOC_ZVAL(*retval);
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- ZVAL_BOOL(*retval, doc_prop->formatoutput);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ ZVAL_BOOL(retval, doc_prop->formatoutput);
} else {
- ZVAL_FALSE(*retval);
+ ZVAL_FALSE(retval);
}
return SUCCESS;
}
int dom_document_format_output_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- dom_doc_propsptr doc_prop;
-
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
-
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- doc_prop->formatoutput = Z_LVAL_P(newval);
- }
-
- if (newval == &value_copy) {
- zval_dtor(newval);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ doc_prop->formatoutput = zend_is_true(newval TSRMLS_CC);
}
return SUCCESS;
@@ -577,39 +503,22 @@ int dom_document_format_output_write(dom_object *obj, zval *newval TSRMLS_DC)
/* {{{ validateOnParse boolean
readonly=no
*/
-int dom_document_validate_on_parse_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_validate_on_parse_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- dom_doc_propsptr doc_prop;
-
- ALLOC_ZVAL(*retval);
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- ZVAL_BOOL(*retval, doc_prop->validateonparse);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ ZVAL_BOOL(retval, doc_prop->validateonparse);
} else {
- ZVAL_FALSE(*retval);
+ ZVAL_FALSE(retval);
}
return SUCCESS;
}
int dom_document_validate_on_parse_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- dom_doc_propsptr doc_prop;
-
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
-
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- doc_prop->validateonparse = Z_LVAL_P(newval);
- }
-
- if (newval == &value_copy) {
- zval_dtor(newval);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ doc_prop->validateonparse = zend_is_true(newval TSRMLS_CC);
}
return SUCCESS;
@@ -619,39 +528,22 @@ int dom_document_validate_on_parse_write(dom_object *obj, zval *newval TSRMLS_DC
/* {{{ resolveExternals boolean
readonly=no
*/
-int dom_document_resolve_externals_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_resolve_externals_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- dom_doc_propsptr doc_prop;
-
- ALLOC_ZVAL(*retval);
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- ZVAL_BOOL(*retval, doc_prop->resolveexternals);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ ZVAL_BOOL(retval, doc_prop->resolveexternals);
} else {
- ZVAL_FALSE(*retval);
+ ZVAL_FALSE(retval);
}
return SUCCESS;
}
int dom_document_resolve_externals_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- dom_doc_propsptr doc_prop;
-
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
-
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- doc_prop->resolveexternals = Z_LVAL_P(newval);
- }
-
- if (newval == &value_copy) {
- zval_dtor(newval);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ doc_prop->resolveexternals = zend_is_true(newval TSRMLS_CC);
}
return SUCCESS;
@@ -661,39 +553,22 @@ int dom_document_resolve_externals_write(dom_object *obj, zval *newval TSRMLS_DC
/* {{{ preserveWhiteSpace boolean
readonly=no
*/
-int dom_document_preserve_whitespace_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_preserve_whitespace_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- dom_doc_propsptr doc_prop;
-
- ALLOC_ZVAL(*retval);
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- ZVAL_BOOL(*retval, doc_prop->preservewhitespace);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ ZVAL_BOOL(retval, doc_prop->preservewhitespace);
} else {
- ZVAL_FALSE(*retval);
+ ZVAL_FALSE(retval);
}
return SUCCESS;
}
int dom_document_preserve_whitespace_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- dom_doc_propsptr doc_prop;
-
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
-
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- doc_prop->preservewhitespace = Z_LVAL_P(newval);
- }
-
- if (newval == &value_copy) {
- zval_dtor(newval);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ doc_prop->preservewhitespace = zend_is_true(newval TSRMLS_CC);
}
return SUCCESS;
@@ -703,39 +578,22 @@ int dom_document_preserve_whitespace_write(dom_object *obj, zval *newval TSRMLS_
/* {{{ recover boolean
readonly=no
*/
-int dom_document_recover_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_recover_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- dom_doc_propsptr doc_prop;
-
- ALLOC_ZVAL(*retval);
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- ZVAL_BOOL(*retval, doc_prop->recover);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ ZVAL_BOOL(retval, doc_prop->recover);
} else {
- ZVAL_FALSE(*retval);
+ ZVAL_FALSE(retval);
}
return SUCCESS;
}
int dom_document_recover_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- dom_doc_propsptr doc_prop;
-
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
-
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- doc_prop->recover = Z_LVAL_P(newval);
- }
-
- if (newval == &value_copy) {
- zval_dtor(newval);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ doc_prop->recover = zend_is_true(newval TSRMLS_CC);
}
return SUCCESS;
@@ -745,39 +603,22 @@ int dom_document_recover_write(dom_object *obj, zval *newval TSRMLS_DC)
/* {{{ substituteEntities boolean
readonly=no
*/
-int dom_document_substitue_entities_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_substitue_entities_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- dom_doc_propsptr doc_prop;
-
- ALLOC_ZVAL(*retval);
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- ZVAL_BOOL(*retval, doc_prop->substituteentities);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ ZVAL_BOOL(retval, doc_prop->substituteentities);
} else {
- ZVAL_FALSE(*retval);
+ ZVAL_FALSE(retval);
}
return SUCCESS;
}
int dom_document_substitue_entities_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- dom_doc_propsptr doc_prop;
-
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_boolean(newval);
-
if (obj->document) {
- doc_prop = dom_get_doc_props(obj->document);
- doc_prop->substituteentities = Z_LVAL_P(newval);
- }
-
- if (newval == &value_copy) {
- zval_dtor(newval);
+ dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
+ doc_prop->substituteentities = zend_is_true(newval TSRMLS_CC);
}
return SUCCESS;
@@ -789,24 +630,21 @@ readonly=no
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-documentURI
Since: DOM Level 3
*/
-int dom_document_document_uri_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_document_uri_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- xmlDoc *docp;
+ xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
char *url;
- docp = (xmlDocPtr) dom_object_get_node(obj);
-
if (docp == NULL) {
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
return FAILURE;
}
- ALLOC_ZVAL(*retval);
url = (char *) docp->URL;
if (url != NULL) {
- ZVAL_STRING(*retval, url, 1);
+ ZVAL_STRING(retval, url);
} else {
- ZVAL_NULL(*retval);
+ ZVAL_NULL(retval);
}
return SUCCESS;
@@ -814,10 +652,8 @@ int dom_document_document_uri_read(dom_object *obj, zval **retval TSRMLS_DC)
int dom_document_document_uri_write(dom_object *obj, zval *newval TSRMLS_DC)
{
- zval value_copy;
- xmlDoc *docp;
-
- docp = (xmlDocPtr) dom_object_get_node(obj);
+ xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
+ zend_string *str;
if (docp == NULL) {
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
@@ -828,21 +664,11 @@ int dom_document_document_uri_write(dom_object *obj, zval *newval TSRMLS_DC)
xmlFree((xmlChar *) docp->URL);
}
- if (newval->type != IS_STRING) {
- if(Z_REFCOUNT_P(newval) > 1) {
- value_copy = *newval;
- zval_copy_ctor(&value_copy);
- newval = &value_copy;
- }
- convert_to_string(newval);
- }
+ str = zval_get_string(newval TSRMLS_CC);
- docp->URL = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval));
-
- if (newval == &value_copy) {
- zval_dtor(newval);
- }
+ docp->URL = xmlStrdup((const xmlChar *) str->val);
+ STR_RELEASE(str);
return SUCCESS;
}
@@ -853,10 +679,9 @@ readonly=yes
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-config
Since: DOM Level 3
*/
-int dom_document_config_read(dom_object *obj, zval **retval TSRMLS_DC)
+int dom_document_config_read(dom_object *obj, zval *retval TSRMLS_DC)
{
- ALLOC_ZVAL(*retval);
- ZVAL_NULL(*retval);
+ ZVAL_NULL(retval);
return SUCCESS;
}
@@ -1128,7 +953,7 @@ PHP_FUNCTION(dom_document_get_elements_by_tag_name)
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC);
- namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC);
+ namednode = Z_DOMOBJ_P(return_value);
local = xmlCharStrndup(name, name_len);
dom_namednode_iter(intern, 0, namednode, NULL, local, NULL TSRMLS_CC);
}
@@ -1337,7 +1162,7 @@ PHP_FUNCTION(dom_document_get_elements_by_tag_name_ns)
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC);
- namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC);
+ namednode = Z_DOMOBJ_P(return_value);
local = xmlCharStrndup(name, name_len);
nsuri = xmlCharStrndup(uri, uri_len);
dom_namednode_iter(intern, 0, namednode, NULL, local, nsuri TSRMLS_CC);
@@ -1443,7 +1268,7 @@ PHP_METHOD(domdocument, __construct)
docp->encoding = (const xmlChar*)xmlStrdup(encoding);
}
- intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
+ intern = Z_DOMOBJ_P(id);
if (intern != NULL) {
olddoc = (xmlDocPtr) dom_object_get_node(intern);
if (olddoc != NULL) {
@@ -1523,7 +1348,7 @@ static xmlDocPtr dom_document_parser(zval *id, int mode, char *source, int sourc
char *directory=NULL, resolved_path[MAXPATHLEN];
if (id != NULL) {
- intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
+ intern = Z_DOMOBJ_P(id);
document = intern->document;
}
@@ -1656,7 +1481,7 @@ static void dom_parse_document(INTERNAL_FUNCTION_PARAMETERS, int mode) {
RETURN_FALSE;
if (id != NULL) {
- intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
+ intern = Z_DOMOBJ_P(id);
if (intern != NULL) {
docp = (xmlDocPtr) dom_object_get_node(intern);
doc_prop = NULL;
@@ -1798,7 +1623,7 @@ PHP_FUNCTION(dom_document_savexml)
xmlBufferFree(buf);
RETURN_FALSE;
}
- RETVAL_STRING(mem, 1);
+ RETVAL_STRING(mem);
xmlBufferFree(buf);
} else {
if (options & LIBXML_SAVE_NOEMPTYTAG) {
@@ -1813,7 +1638,7 @@ PHP_FUNCTION(dom_document_savexml)
if (!size) {
RETURN_FALSE;
}
- RETVAL_STRINGL(mem, size, 1);
+ RETVAL_STRINGL(mem, size);
xmlFree(mem);
}
}
@@ -2175,7 +2000,7 @@ static void dom_load_html(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */
RETURN_FALSE;
if (id != NULL && instanceof_function(Z_OBJCE_P(id), dom_document_class_entry TSRMLS_CC)) {
- intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
+ intern = Z_DOMOBJ_P(id);
if (intern != NULL) {
docp = (xmlDocPtr) dom_object_get_node(intern);
doc_prop = NULL;
@@ -2320,7 +2145,7 @@ PHP_FUNCTION(dom_document_save_html)
if (!mem) {
RETVAL_FALSE;
} else {
- RETVAL_STRINGL((const char*) mem, size, 1);
+ RETVAL_STRINGL((const char*) mem, size);
}
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error dumping HTML node");
@@ -2336,7 +2161,7 @@ PHP_FUNCTION(dom_document_save_html)
if (!size) {
RETVAL_FALSE;
} else {
- RETVAL_STRINGL((const char*) mem, size, 1);
+ RETVAL_STRINGL((const char*) mem, size);
}
if (mem)
xmlFree(mem);
@@ -2353,47 +2178,22 @@ PHP_METHOD(domdocument, registerNodeClass)
{
zval *id;
xmlDoc *docp;
- char *baseclass = NULL, *extendedclass = NULL;
- int baseclass_len = 0, extendedclass_len = 0;
- zend_class_entry *basece = NULL, *ce = NULL;
+ zend_class_entry *basece = dom_node_class_entry, *ce = NULL;
dom_object *intern;
- if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss!", &id, dom_document_class_entry, &baseclass, &baseclass_len, &extendedclass, &extendedclass_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OCs!", &id, dom_document_class_entry, &basece, &ce) == FAILURE) {
return;
}
- if (baseclass_len) {
- zend_class_entry **pce;
- if (zend_lookup_class(baseclass, baseclass_len, &pce TSRMLS_CC) == FAILURE) {
- php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s does not exist", baseclass);
- return;
- }
- basece = *pce;
- }
-
- if (basece == NULL || ! instanceof_function(basece, dom_node_class_entry TSRMLS_CC)) {
- php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s is not derived from DOMNode.", baseclass);
- return;
- }
-
- if (extendedclass_len) {
- zend_class_entry **pce;
- if (zend_lookup_class(extendedclass, extendedclass_len, &pce TSRMLS_CC) == FAILURE) {
- php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s does not exist", extendedclass);
- }
- ce = *pce;
- }
-
if (ce == NULL || instanceof_function(ce, basece TSRMLS_CC)) {
-
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
if (dom_set_doc_classmap(intern->document, basece, ce TSRMLS_CC) == FAILURE) {
- php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s could not be registered.", extendedclass);
+ php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s could not be registered.", ce->name->val);
}
RETURN_TRUE;
} else {
- php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s is not derived from %s.", extendedclass, baseclass);
+ php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s is not derived from %s.", ce->name->val, basece->name->val);
}
RETURN_FALSE;