Skip to content

Commit 34d3c64

Browse files
committed
Update impl_common.h
1 parent c539894 commit 34d3c64

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

include/xml/impl/impl_common.h

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ xmla(const xml_t * __restrict object, const char * __restrict name) {
3636
return NULL;
3737

3838
namesize = strlen(name);
39-
while (iter && strncmp(iter->name, name, namesize) != 0)
39+
while (iter
40+
&& (!iter->name
41+
|| (size_t)iter->namesize != namesize
42+
|| strncmp(iter->name, name, namesize) != 0))
4043
iter = iter->next;
4144

4245
return iter;
@@ -52,7 +55,11 @@ xml_elem(const xml_t * __restrict object, const char * __restrict name) {
5255
return NULL;
5356

5457
namesize = strlen(name);
55-
while (iter && strncmp(iter->tag, name, namesize) != 0)
58+
while (iter
59+
&& (iter->type != XML_ELEMENT
60+
|| !iter->tag
61+
|| (size_t)iter->tagsize != namesize
62+
|| strncmp(iter->tag, name, namesize) != 0))
5663
iter = iter->next;
5764

5865
return iter;
@@ -68,7 +75,11 @@ xml_elem_next(const xml_t * __restrict current, const char * __restrict name) {
6875
return NULL;
6976

7077
namesize = strlen(name);
71-
while (iter && strncmp(iter->tag, name, namesize) != 0)
78+
while (iter
79+
&& (iter->type != XML_ELEMENT
80+
|| !iter->tag
81+
|| (size_t)iter->tagsize != namesize
82+
|| strncmp(iter->tag, name, namesize) != 0))
7283
iter = iter->next;
7384

7485
return iter;

0 commit comments

Comments
 (0)