Skip to content

Commit f58035d

Browse files
committed
Cleanup macro usage in ext/dom and ext/libxml
With the new lifetime system in place, we can simplify some macros.
1 parent d18c3f1 commit f58035d

File tree

6 files changed

+33
-49
lines changed

6 files changed

+33
-49
lines changed

ext/dom/characterdata.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -331,14 +331,13 @@ PHP_METHOD(DOMCharacterData, replaceData)
331331
PHP_METHOD(DOMCharacterData, remove)
332332
{
333333
zval *id = ZEND_THIS;
334-
xmlNodePtr child;
335334
dom_object *intern;
336335

337336
if (zend_parse_parameters_none() == FAILURE) {
338337
RETURN_THROWS();
339338
}
340339

341-
DOM_GET_OBJ(child, id, xmlNodePtr, intern);
340+
DOM_GET_INTERN(id, intern);
342341

343342
dom_child_node_remove(intern);
344343
RETURN_NULL();
@@ -349,14 +348,13 @@ PHP_METHOD(DOMCharacterData, after)
349348
uint32_t argc;
350349
zval *args, *id;
351350
dom_object *intern;
352-
xmlNode *context;
353351

354352
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
355353
RETURN_THROWS();
356354
}
357355

358356
id = ZEND_THIS;
359-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
357+
DOM_GET_INTERN(id, intern);
360358

361359
dom_parent_node_after(intern, args, argc);
362360
}
@@ -366,14 +364,13 @@ PHP_METHOD(DOMCharacterData, before)
366364
uint32_t argc;
367365
zval *args, *id;
368366
dom_object *intern;
369-
xmlNode *context;
370367

371368
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
372369
RETURN_THROWS();
373370
}
374371

375372
id = ZEND_THIS;
376-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
373+
DOM_GET_INTERN(id, intern);
377374

378375
dom_parent_node_before(intern, args, argc);
379376
}
@@ -383,14 +380,13 @@ PHP_METHOD(DOMCharacterData, replaceWith)
383380
uint32_t argc;
384381
zval *args, *id;
385382
dom_object *intern;
386-
xmlNode *context;
387383

388384
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
389385
RETURN_THROWS();
390386
}
391387

392388
id = ZEND_THIS;
393-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
389+
DOM_GET_INTERN(id, intern);
394390

395391
dom_parent_node_after(intern, args, argc);
396392
dom_child_node_remove(intern);

ext/dom/document.c

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,6 @@ PHP_METHOD(DOMDocument, createEntityReference)
773773
PHP_METHOD(DOMDocument, getElementsByTagName)
774774
{
775775
zval *id;
776-
xmlDocPtr docp;
777776
size_t name_len;
778777
dom_object *intern, *namednode;
779778
char *name;
@@ -783,7 +782,7 @@ PHP_METHOD(DOMDocument, getElementsByTagName)
783782
RETURN_THROWS();
784783
}
785784

786-
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
785+
DOM_GET_INTERN(id, intern);
787786

788787
php_dom_create_iterator(return_value, DOM_NODELIST);
789788
namednode = Z_DOMOBJ_P(return_value);
@@ -983,7 +982,6 @@ Since: DOM Level 2
983982
PHP_METHOD(DOMDocument, getElementsByTagNameNS)
984983
{
985984
zval *id;
986-
xmlDocPtr docp;
987985
size_t uri_len, name_len;
988986
dom_object *intern, *namednode;
989987
char *uri, *name;
@@ -993,7 +991,7 @@ PHP_METHOD(DOMDocument, getElementsByTagNameNS)
993991
RETURN_THROWS();
994992
}
995993

996-
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
994+
DOM_GET_INTERN(id, intern);
997995

998996
php_dom_create_iterator(return_value, DOM_NODELIST);
999997
namednode = Z_DOMOBJ_P(return_value);
@@ -2131,7 +2129,6 @@ PHP_METHOD(DOMDocument, saveHTML)
21312129
PHP_METHOD(DOMDocument, registerNodeClass)
21322130
{
21332131
zval *id;
2134-
xmlDoc *docp;
21352132
zend_class_entry *basece = dom_node_class_entry, *ce = NULL;
21362133
dom_object *intern;
21372134

@@ -2141,7 +2138,7 @@ PHP_METHOD(DOMDocument, registerNodeClass)
21412138
}
21422139

21432140
if (ce == NULL || instanceof_function(ce, basece)) {
2144-
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
2141+
DOM_GET_INTERN(id, intern);
21452142
dom_set_doc_classmap(intern->document, basece, ce);
21462143
RETURN_TRUE;
21472144
}
@@ -2158,14 +2155,13 @@ PHP_METHOD(DOMDocument, append)
21582155
uint32_t argc;
21592156
zval *args, *id;
21602157
dom_object *intern;
2161-
xmlNode *context;
21622158

21632159
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
21642160
RETURN_THROWS();
21652161
}
21662162

21672163
id = ZEND_THIS;
2168-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
2164+
DOM_GET_INTERN(id, intern);
21692165

21702166
dom_parent_node_append(intern, args, argc);
21712167
}
@@ -2179,14 +2175,13 @@ PHP_METHOD(DOMDocument, prepend)
21792175
uint32_t argc;
21802176
zval *args, *id;
21812177
dom_object *intern;
2182-
xmlNode *context;
21832178

21842179
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
21852180
RETURN_THROWS();
21862181
}
21872182

21882183
id = ZEND_THIS;
2189-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
2184+
DOM_GET_INTERN(id, intern);
21902185

21912186
dom_parent_node_prepend(intern, args, argc);
21922187
}

ext/dom/documentfragment.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,13 @@ PHP_METHOD(DOMDocumentFragment, append)
100100
uint32_t argc;
101101
zval *args, *id;
102102
dom_object *intern;
103-
xmlNode *context;
104103

105104
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
106105
RETURN_THROWS();
107106
}
108107

109108
id = ZEND_THIS;
110-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
109+
DOM_GET_INTERN(id, intern);
111110

112111
dom_parent_node_append(intern, args, argc);
113112
}
@@ -121,14 +120,13 @@ PHP_METHOD(DOMDocumentFragment, prepend)
121120
uint32_t argc;
122121
zval *args, *id;
123122
dom_object *intern;
124-
xmlNode *context;
125123

126124
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
127125
RETURN_THROWS();
128126
}
129127

130128
id = ZEND_THIS;
131-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
129+
DOM_GET_INTERN(id, intern);
132130

133131
dom_parent_node_prepend(intern, args, argc);
134132
}

ext/dom/element.c

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,6 @@ PHP_METHOD(DOMElement, removeAttributeNode)
496496
PHP_METHOD(DOMElement, getElementsByTagName)
497497
{
498498
zval *id;
499-
xmlNodePtr elemp;
500499
size_t name_len;
501500
dom_object *intern, *namednode;
502501
char *name;
@@ -506,7 +505,7 @@ PHP_METHOD(DOMElement, getElementsByTagName)
506505
RETURN_THROWS();
507506
}
508507

509-
DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
508+
DOM_GET_INTERN(id, intern);
510509

511510
php_dom_create_iterator(return_value, DOM_NODELIST);
512511
namednode = Z_DOMOBJ_P(return_value);
@@ -901,7 +900,6 @@ Since: DOM Level 2
901900
PHP_METHOD(DOMElement, getElementsByTagNameNS)
902901
{
903902
zval *id;
904-
xmlNodePtr elemp;
905903
size_t uri_len, name_len;
906904
dom_object *intern, *namednode;
907905
char *uri, *name;
@@ -911,7 +909,7 @@ PHP_METHOD(DOMElement, getElementsByTagNameNS)
911909
RETURN_THROWS();
912910
}
913911

914-
DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
912+
DOM_GET_INTERN(id, intern);
915913

916914
php_dom_create_iterator(return_value, DOM_NODELIST);
917915
namednode = Z_DOMOBJ_P(return_value);
@@ -1116,15 +1114,14 @@ PHP_METHOD(DOMElement, setIdAttributeNode)
11161114
PHP_METHOD(DOMElement, remove)
11171115
{
11181116
zval *id;
1119-
xmlNodePtr child;
11201117
dom_object *intern;
11211118

11221119
if (zend_parse_parameters_none() == FAILURE) {
11231120
RETURN_THROWS();
11241121
}
11251122

11261123
id = ZEND_THIS;
1127-
DOM_GET_OBJ(child, id, xmlNodePtr, intern);
1124+
DOM_GET_INTERN(id, intern);
11281125

11291126
dom_child_node_remove(intern);
11301127
}
@@ -1135,14 +1132,13 @@ PHP_METHOD(DOMElement, after)
11351132
uint32_t argc;
11361133
zval *args, *id;
11371134
dom_object *intern;
1138-
xmlNode *context;
11391135

11401136
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
11411137
RETURN_THROWS();
11421138
}
11431139

11441140
id = ZEND_THIS;
1145-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
1141+
DOM_GET_INTERN(id, intern);
11461142

11471143
dom_parent_node_after(intern, args, argc);
11481144
}
@@ -1152,14 +1148,13 @@ PHP_METHOD(DOMElement, before)
11521148
uint32_t argc;
11531149
zval *args, *id;
11541150
dom_object *intern;
1155-
xmlNode *context;
11561151

11571152
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
11581153
RETURN_THROWS();
11591154
}
11601155

11611156
id = ZEND_THIS;
1162-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
1157+
DOM_GET_INTERN(id, intern);
11631158

11641159
dom_parent_node_before(intern, args, argc);
11651160
}
@@ -1172,14 +1167,13 @@ PHP_METHOD(DOMElement, append)
11721167
uint32_t argc;
11731168
zval *args, *id;
11741169
dom_object *intern;
1175-
xmlNode *context;
11761170

11771171
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
11781172
RETURN_THROWS();
11791173
}
11801174

11811175
id = ZEND_THIS;
1182-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
1176+
DOM_GET_INTERN(id, intern);
11831177

11841178
dom_parent_node_append(intern, args, argc);
11851179
}
@@ -1193,14 +1187,13 @@ PHP_METHOD(DOMElement, prepend)
11931187
uint32_t argc;
11941188
zval *args, *id;
11951189
dom_object *intern;
1196-
xmlNode *context;
11971190

11981191
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
11991192
RETURN_THROWS();
12001193
}
12011194

12021195
id = ZEND_THIS;
1203-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
1196+
DOM_GET_INTERN(id, intern);
12041197

12051198
dom_parent_node_prepend(intern, args, argc);
12061199
}
@@ -1214,14 +1207,13 @@ PHP_METHOD(DOMElement, replaceWith)
12141207
uint32_t argc;
12151208
zval *args, *id;
12161209
dom_object *intern;
1217-
xmlNode *context;
12181210

12191211
if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &argc) == FAILURE) {
12201212
RETURN_THROWS();
12211213
}
12221214

12231215
id = ZEND_THIS;
1224-
DOM_GET_OBJ(context, id, xmlNodePtr, intern);
1216+
DOM_GET_INTERN(id, intern);
12251217

12261218
dom_child_replace_with(intern, args, argc);
12271219
}

ext/dom/php_dom.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,14 +167,19 @@ void php_dom_nodelist_get_item_into_zval(dom_nnodemap_object *objmap, zend_long
167167
int php_dom_get_namednodemap_length(dom_object *obj);
168168
int php_dom_get_nodelist_length(dom_object *obj);
169169

170-
#define DOM_GET_OBJ(__ptr, __id, __prtype, __intern) { \
170+
#define DOM_GET_INTERN(__id, __intern) { \
171171
__intern = Z_DOMOBJ_P(__id); \
172-
if (__intern->ptr == NULL || !(__ptr = (__prtype)((php_libxml_node_ptr *)__intern->ptr)->node)) { \
172+
if (UNEXPECTED(__intern->ptr == NULL)) { \
173173
zend_throw_error(NULL, "Couldn't fetch %s", ZSTR_VAL(__intern->std.ce->name));\
174174
RETURN_THROWS();\
175175
} \
176176
}
177177

178+
#define DOM_GET_OBJ(__ptr, __id, __prtype, __intern) { \
179+
DOM_GET_INTERN(__id, __intern); \
180+
__ptr = (__prtype)((php_libxml_node_ptr *)__intern->ptr)->node; \
181+
}
182+
178183
#define DOM_NO_ARGS() \
179184
if (zend_parse_parameters_none() == FAILURE) { \
180185
RETURN_THROWS(); \

ext/dom/xml_common.h

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,20 +61,18 @@ PHP_DOM_EXPORT xmlNodePtr dom_object_get_node(dom_object *obj);
6161

6262
#define NODE_GET_OBJ(__ptr, __id, __prtype, __intern) { \
6363
__intern = Z_LIBXML_NODE_P(__id); \
64-
if (__intern->node == NULL || !(__ptr = (__prtype)__intern->node->node)) { \
65-
php_error_docref(NULL, E_WARNING, "Couldn't fetch %s", \
64+
if (UNEXPECTED(__intern->node == NULL)) { \
65+
php_error_docref(NULL, E_WARNING, "Couldn't fetch %s", \
6666
ZSTR_VAL(__intern->std.ce->name));\
67-
RETURN_NULL();\
68-
} \
67+
RETURN_NULL();\
68+
} \
69+
__ptr = (__prtype)__intern->node->node; \
6970
}
7071

7172
#define DOC_GET_OBJ(__ptr, __id, __prtype, __intern) { \
7273
__intern = Z_LIBXML_NODE_P(__id); \
73-
if (__intern->document != NULL) { \
74-
if (!(__ptr = (__prtype)__intern->document->ptr)) { \
75-
php_error_docref(NULL, E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\
76-
RETURN_NULL();\
77-
} \
74+
if (EXPECTED(__intern->document != NULL)) { \
75+
__ptr = (__prtype)__intern->document->ptr); \
7876
} \
7977
}
8078

0 commit comments

Comments
 (0)