Skip to content

Commit 4cf0269

Browse files
committed
DOMNamedNodeMap::count() cannot return false
1 parent f089e8a commit 4cf0269

File tree

3 files changed

+31
-34
lines changed

3 files changed

+31
-34
lines changed

ext/dom/namednodemap.c

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -31,42 +31,41 @@
3131
* Since:
3232
*/
3333

34-
/* {{{ length int
35-
readonly=yes
36-
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D0FB19E
37-
Since:
38-
*/
39-
int dom_namednodemap_length_read(dom_object *obj, zval *retval)
34+
static int get_namednodemap_length(dom_object *obj)
4035
{
41-
dom_nnodemap_object *objmap;
42-
xmlAttrPtr curnode;
43-
xmlNodePtr nodep;
44-
int count = 0;
36+
dom_nnodemap_object *objmap = (dom_nnodemap_object *) obj->ptr;
37+
if (!objmap) {
38+
return 0;
39+
}
4540

46-
objmap = (dom_nnodemap_object *)obj->ptr;
41+
if (objmap->nodetype == XML_NOTATION_NODE || objmap->nodetype == XML_ENTITY_NODE) {
42+
return objmap->ht ? xmlHashSize(objmap->ht) : 0;
43+
}
4744

48-
if (objmap != NULL) {
49-
if ((objmap->nodetype == XML_NOTATION_NODE) ||
50-
objmap->nodetype == XML_ENTITY_NODE) {
51-
if (objmap->ht) {
52-
count = xmlHashSize(objmap->ht);
53-
}
54-
} else {
55-
nodep = dom_object_get_node(objmap->baseobj);
56-
if (nodep) {
57-
curnode = nodep->properties;
58-
if (curnode) {
59-
count++;
60-
while (curnode->next != NULL) {
61-
count++;
62-
curnode = curnode->next;
63-
}
64-
}
45+
int count = 0;
46+
xmlNodePtr nodep = dom_object_get_node(objmap->baseobj);
47+
if (nodep) {
48+
xmlAttrPtr curnode = nodep->properties;
49+
if (curnode) {
50+
count++;
51+
while (curnode->next != NULL) {
52+
count++;
53+
curnode = curnode->next;
6554
}
6655
}
6756
}
6857

69-
ZVAL_LONG(retval, count);
58+
return count;
59+
}
60+
61+
/* {{{ length int
62+
readonly=yes
63+
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D0FB19E
64+
Since:
65+
*/
66+
int dom_namednodemap_length_read(dom_object *obj, zval *retval)
67+
{
68+
ZVAL_LONG(retval, get_namednodemap_length(obj));
7069
return SUCCESS;
7170
}
7271

@@ -255,9 +254,7 @@ PHP_METHOD(DOMNamedNodeMap, count)
255254
}
256255

257256
intern = Z_DOMOBJ_P(id);
258-
if(dom_namednodemap_length_read(intern, return_value) == FAILURE) {
259-
RETURN_FALSE;
260-
}
257+
RETURN_LONG(get_namednodemap_length(intern));
261258
}
262259
/* }}} end dom_namednodemap_count */
263260

ext/dom/php_dom.stub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ public function getNamedItemNS(?string $namespace, string $localName) {}
602602
/** @return DOMNode|null */
603603
public function item(int $index) {}
604604

605-
/** @return int|false */
605+
/** @return int */
606606
public function count() {}
607607

608608
public function getIterator(): Iterator {}

ext/dom/php_dom_arginfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: ba5090af41bb2cb6307a636c2e34cf324f785d61 */
2+
* Stub hash: 98af31a563c0e793308c583a80a1be77c4965e82 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_dom_import_simplexml, 0, 1, DOMElement, 1)
55
ZEND_ARG_TYPE_INFO(0, node, IS_OBJECT, 0)

0 commit comments

Comments
 (0)