Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 80a4783

Browse files
Deduplicate NULL checks in ext/dom (#15015)
This introduces a new helper php_dom_create_nullable_object() that does the NULL check and puts NULL in return_value. Otherwise it runs php_dom_create_object(). This deduplicates a bit of code.
1 parent 27205bd commit 80a4783

File tree

8 files changed

+24
-71
lines changed

8 files changed

+24
-71
lines changed

‎ext/dom/attr.c‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,12 +163,8 @@ zend_result dom_attr_owner_element_read(dom_object *obj, zval *retval)
163163
DOM_PROP_NODE(xmlNodePtr, nodep, obj);
164164

165165
xmlNodePtr nodeparent = nodep->parent;
166-
if (!nodeparent) {
167-
ZVAL_NULL(retval);
168-
return SUCCESS;
169-
}
170166

171-
php_dom_create_object(nodeparent, retval, obj);
167+
php_dom_create_nullable_object(nodeparent, retval, obj);
172168
return SUCCESS;
173169
}
174170

‎ext/dom/document.c‎

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,8 @@ zend_result dom_document_doctype_read(dom_object *obj, zval *retval)
5050
DOM_PROP_NODE(xmlDocPtr, docp, obj);
5151

5252
xmlDtdPtr dtdptr = xmlGetIntSubset(docp);
53-
if (!dtdptr) {
54-
ZVAL_NULL(retval);
55-
return SUCCESS;
56-
}
5753

58-
php_dom_create_object((xmlNodePtr) dtdptr, retval, obj);
54+
php_dom_create_nullable_object((xmlNodePtr) dtdptr, retval, obj);
5955
return SUCCESS;
6056
}
6157

@@ -83,12 +79,8 @@ zend_result dom_document_document_element_read(dom_object *obj, zval *retval)
8379
DOM_PROP_NODE(xmlDocPtr, docp, obj);
8480

8581
xmlNodePtr root = xmlDocGetRootElement(docp);
86-
if (!root) {
87-
ZVAL_NULL(retval);
88-
return SUCCESS;
89-
}
9082

91-
php_dom_create_object(root, retval, obj);
83+
php_dom_create_nullable_object(root, retval, obj);
9284
return SUCCESS;
9385
}
9486

‎ext/dom/entityreference.c‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,8 @@ zend_result dom_entity_reference_child_read(dom_object *obj, zval *retval)
8585
DOM_PROP_NODE(xmlNodePtr, nodep, obj);
8686

8787
xmlEntityPtr entity = dom_entity_reference_fetch_and_sync_declaration(nodep);
88-
if (entity == NULL) {
89-
ZVAL_NULL(retval);
90-
return SUCCESS;
91-
}
9288

93-
php_dom_create_object((xmlNodePtr) entity, retval, obj);
89+
php_dom_create_nullable_object((xmlNodePtr) entity, retval, obj);
9490
return SUCCESS;
9591
}
9692

‎ext/dom/html_document.c‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1386,11 +1386,7 @@ zend_result dom_html_document_element_read_helper(dom_object *obj, zval *retval,
13861386
DOM_PROP_NODE(const xmlDoc *, docp, obj);
13871387

13881388
const xmlNode *element = dom_html_document_element_read_raw(docp, accept);
1389-
if (element == NULL) {
1390-
ZVAL_NULL(retval);
1391-
} else {
1392-
php_dom_create_object((xmlNodePtr) element, retval, obj);
1393-
}
1389+
php_dom_create_nullable_object((xmlNodePtr) element, retval, obj);
13941390

13951391
return SUCCESS;
13961392
}

‎ext/dom/node.c‎

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,7 @@ zend_result dom_node_first_child_read(dom_object *obj, zval *retval)
304304
first = nodep->children;
305305
}
306306

307-
if (!first) {
308-
ZVAL_NULL(retval);
309-
return SUCCESS;
310-
}
311-
312-
php_dom_create_object(first, retval, obj);
307+
php_dom_create_nullable_object(first, retval, obj);
313308
return SUCCESS;
314309
}
315310

@@ -329,12 +324,7 @@ zend_result dom_node_last_child_read(dom_object *obj, zval *retval)
329324
last = nodep->last;
330325
}
331326

332-
if (!last) {
333-
ZVAL_NULL(retval);
334-
return SUCCESS;
335-
}
336-
337-
php_dom_create_object(last, retval, obj);
327+
php_dom_create_nullable_object(last, retval, obj);
338328
return SUCCESS;
339329
}
340330

@@ -350,12 +340,8 @@ zend_result dom_node_previous_sibling_read(dom_object *obj, zval *retval)
350340
DOM_PROP_NODE(xmlNodePtr, nodep, obj);
351341

352342
xmlNodePtr prevsib = nodep->prev;
353-
if (!prevsib) {
354-
ZVAL_NULL(retval);
355-
return SUCCESS;
356-
}
357343

358-
php_dom_create_object(prevsib, retval, obj);
344+
php_dom_create_nullable_object(prevsib, retval, obj);
359345
return SUCCESS;
360346
}
361347

@@ -371,12 +357,8 @@ zend_result dom_node_next_sibling_read(dom_object *obj, zval *retval)
371357
DOM_PROP_NODE(xmlNodePtr, nodep, obj);
372358

373359
xmlNodePtr nextsib = nodep->next;
374-
if (!nextsib) {
375-
ZVAL_NULL(retval);
376-
return SUCCESS;
377-
}
378360

379-
php_dom_create_object(nextsib, retval, obj);
361+
php_dom_create_nullable_object(nextsib, retval, obj);
380362
return SUCCESS;
381363
}
382364

@@ -397,12 +379,7 @@ zend_result dom_node_previous_element_sibling_read(dom_object *obj, zval *retval
397379
prevsib = prevsib->prev;
398380
}
399381

400-
if (!prevsib) {
401-
ZVAL_NULL(retval);
402-
return SUCCESS;
403-
}
404-
405-
php_dom_create_object(prevsib, retval, obj);
382+
php_dom_create_nullable_object(prevsib, retval, obj);
406383
return SUCCESS;
407384
}
408385

@@ -423,12 +400,7 @@ zend_result dom_node_next_element_sibling_read(dom_object *obj, zval *retval)
423400
nextsib = nextsib->next;
424401
}
425402

426-
if (!nextsib) {
427-
ZVAL_NULL(retval);
428-
return SUCCESS;
429-
}
430-
431-
php_dom_create_object(nextsib, retval, obj);
403+
php_dom_create_nullable_object(nextsib, retval, obj);
432404
return SUCCESS;
433405
}
434406

‎ext/dom/parentnode/tree.c‎

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,7 @@ zend_result dom_parent_node_first_element_child_read(dom_object *obj, zval *retv
3939
first = first->next;
4040
}
4141

42-
if (!first) {
43-
ZVAL_NULL(retval);
44-
return SUCCESS;
45-
}
46-
47-
php_dom_create_object(first, retval, obj);
42+
php_dom_create_nullable_object(first, retval, obj);
4843
return SUCCESS;
4944
}
5045
/* }}} */
@@ -63,12 +58,7 @@ zend_result dom_parent_node_last_element_child_read(dom_object *obj, zval *retva
6358
last = last->prev;
6459
}
6560

66-
if (!last) {
67-
ZVAL_NULL(retval);
68-
return SUCCESS;
69-
}
70-
71-
php_dom_create_object(last, retval, obj);
61+
php_dom_create_nullable_object(last, retval, obj);
7262
return SUCCESS;
7363
}
7464
/* }}} */

‎ext/dom/php_dom.c‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1606,6 +1606,16 @@ static zend_always_inline zend_class_entry *dom_get_element_ce(const xmlNode *no
16061606
}
16071607
}
16081608

1609+
bool php_dom_create_nullable_object(xmlNodePtr obj, zval *return_value, dom_object *domobj)
1610+
{
1611+
if (!obj) {
1612+
ZVAL_NULL(return_value);
1613+
return false;
1614+
}
1615+
1616+
return php_dom_create_object(obj, return_value, domobj);
1617+
}
1618+
16091619
/* {{{ php_dom_create_object */
16101620
PHP_DOM_EXPORT bool php_dom_create_object(xmlNodePtr obj, zval *return_value, dom_object *domobj)
16111621
{

‎ext/dom/php_dom.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ const char *dom_locate_a_namespace(const xmlNode *node, const zend_string *prefi
179179
void dom_mark_namespaces_as_attributes_too(php_dom_libxml_ns_mapper *ns_mapper, xmlDocPtr doc);
180180
bool dom_compare_value(const xmlAttr *attr, const xmlChar *value);
181181
void dom_attr_value_will_change(dom_object *obj, xmlAttrPtr attrp);
182+
bool php_dom_create_nullable_object(xmlNodePtr obj, zval *return_value, dom_object *domobj);
182183

183184
typedef enum {
184185
DOM_LOAD_STRING = 0,

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /