diff options
Diffstat (limited to 'ext/dom/element.c')
-rw-r--r-- | ext/dom/element.c | 10 |
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); } |