summaryrefslogtreecommitdiff
path: root/ext/dom/element.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dom/element.c')
-rw-r--r--ext/dom/element.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/ext/dom/element.c b/ext/dom/element.c
index c817a3c01e..57ad3003e7 100644
--- a/ext/dom/element.c
+++ b/ext/dom/element.c
@@ -58,7 +58,7 @@ zend_function_entry php_dom_element_class_functions[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto void DomElement::__construct(string name, [string value]); */
+/* {{{ proto void DomElement::__construct(string name, [string value], [string uri]); */
PHP_METHOD(domelement, __construct)
{
@@ -106,6 +106,14 @@ PHP_METHOD(domelement, __construct)
RETURN_FALSE;
}
} else {
+ /* If you don't pass a namespace uri, then you can't set a prefix */
+ localname = xmlSplitQName2(name, (xmlChar **) &prefix);
+ if (prefix != NULL) {
+ xmlFree(localname);
+ xmlFree(prefix);
+ php_dom_throw_error(NAMESPACE_ERR, 1 TSRMLS_CC);
+ RETURN_FALSE;
+ }
nodep = xmlNewNode(NULL, (xmlChar *) name);
}