@@ -162,9 +162,8 @@ xmlNode* dom_zvals_to_fragment(php_libxml_ref_obj *document, xmlNode *contextNod
162
162
newNode = dom_object_get_node (newNodeObj );
163
163
164
164
if (newNode -> doc != documentNode ) {
165
- xmlFree (fragment );
166
165
php_dom_throw_error (WRONG_DOCUMENT_ERR , stricterror );
167
- return NULL ;
166
+ goto err ;
168
167
}
169
168
170
169
if (newNode -> parent != NULL ) {
@@ -175,10 +174,7 @@ xmlNode* dom_zvals_to_fragment(php_libxml_ref_obj *document, xmlNode *contextNod
175
174
xmlSetTreeDoc (newNode , documentNode );
176
175
177
176
if (newNode -> type == XML_ATTRIBUTE_NODE ) {
178
- xmlFree (fragment );
179
-
180
- php_dom_throw_error (HIERARCHY_REQUEST_ERR , stricterror );
181
- return NULL ;
177
+ goto hierarchy_request_err ;
182
178
}
183
179
184
180
/*
@@ -191,42 +187,39 @@ xmlNode* dom_zvals_to_fragment(php_libxml_ref_obj *document, xmlNode *contextNod
191
187
}
192
188
193
189
if (!xmlAddChild (fragment , newNode )) {
194
- xmlFree (fragment );
195
190
if (nodesc > 1 ) {
196
191
xmlFreeNode (newNode );
197
192
}
198
-
199
- php_dom_throw_error (HIERARCHY_REQUEST_ERR , stricterror );
200
- return NULL ;
193
+ goto hierarchy_request_err ;
201
194
}
202
195
203
196
continue ;
204
197
} else {
205
- xmlFree (fragment );
206
-
207
198
zend_argument_type_error (i + 1 , "must be of type DOMNode|string, %s given" , zend_zval_type_name (& nodes [i ]));
208
- return NULL ;
199
+ goto err ;
209
200
}
210
201
} else if (Z_TYPE (nodes [i ]) == IS_STRING ) {
211
202
newNode = xmlNewDocText (documentNode , (xmlChar * ) Z_STRVAL (nodes [i ]));
212
203
213
204
xmlSetTreeDoc (newNode , documentNode );
214
205
215
206
if (!xmlAddChild (fragment , newNode )) {
216
- xmlFree (fragment );
217
-
218
- return NULL ;
207
+ xmlFreeNode (newNode );
208
+ goto hierarchy_request_err ;
219
209
}
220
210
} else {
221
- xmlFree (fragment );
222
-
223
211
zend_argument_type_error (i + 1 , "must be of type DOMNode|string, %s given" , zend_zval_type_name (& nodes [i ]));
224
-
225
- return NULL ;
212
+ goto err ;
226
213
}
227
214
}
228
215
229
216
return fragment ;
217
+
218
+ hierarchy_request_err :
219
+ php_dom_throw_error (HIERARCHY_REQUEST_ERR , stricterror );
220
+ err :
221
+ xmlFreeNode (fragment );
222
+ return NULL ;
230
223
}
231
224
232
225
static void dom_fragment_assign_parent_node (xmlNodePtr parentNode , xmlNodePtr fragment )
0 commit comments