@@ -1258,31 +1258,29 @@ SXE_METHOD(xpath)
12581258 }
12591259
12601260 result = retval -> nodesetval ;
1261- if (!result ) {
1262- xmlXPathFreeObject (retval );
1263- RETURN_FALSE ;
1264- }
12651261
12661262 array_init (return_value );
12671263
1268- for (i = 0 ; i < result -> nodeNr ; ++ i ) {
1269- nodeptr = result -> nodeTab [i ];
1270- if (nodeptr -> type == XML_TEXT_NODE || nodeptr -> type == XML_ELEMENT_NODE || nodeptr -> type == XML_ATTRIBUTE_NODE ) {
1271- MAKE_STD_ZVAL (value );
1272- /**
1273- * Detect the case where the last selector is text(), simplexml
1274- * always accesses the text() child by default, therefore we assign
1275- * to the parent node.
1276- */
1277- if (nodeptr -> type == XML_TEXT_NODE ) {
1278- _node_as_zval (sxe , nodeptr -> parent , value , SXE_ITER_NONE , NULL , NULL , 0 TSRMLS_CC );
1279- } else if (nodeptr -> type == XML_ATTRIBUTE_NODE ) {
1280- _node_as_zval (sxe , nodeptr -> parent , value , SXE_ITER_ATTRLIST , (char * )nodeptr -> name , nodeptr -> ns ? (xmlChar * )nodeptr -> ns -> href : NULL , 0 TSRMLS_CC );
1281- } else {
1282- _node_as_zval (sxe , nodeptr , value , SXE_ITER_NONE , NULL , NULL , 0 TSRMLS_CC );
1283- }
1264+ if (result != NULL ) {
1265+ for (i = 0 ; i < result -> nodeNr ; ++ i ) {
1266+ nodeptr = result -> nodeTab [i ];
1267+ if (nodeptr -> type == XML_TEXT_NODE || nodeptr -> type == XML_ELEMENT_NODE || nodeptr -> type == XML_ATTRIBUTE_NODE ) {
1268+ MAKE_STD_ZVAL (value );
1269+ /**
1270+ * Detect the case where the last selector is text(), simplexml
1271+ * always accesses the text() child by default, therefore we assign
1272+ * to the parent node.
1273+ */
1274+ if (nodeptr -> type == XML_TEXT_NODE ) {
1275+ _node_as_zval (sxe , nodeptr -> parent , value , SXE_ITER_NONE , NULL , NULL , 0 TSRMLS_CC );
1276+ } else if (nodeptr -> type == XML_ATTRIBUTE_NODE ) {
1277+ _node_as_zval (sxe , nodeptr -> parent , value , SXE_ITER_ATTRLIST , (char * )nodeptr -> name , nodeptr -> ns ? (xmlChar * )nodeptr -> ns -> href : NULL , 0 TSRMLS_CC );
1278+ } else {
1279+ _node_as_zval (sxe , nodeptr , value , SXE_ITER_NONE , NULL , NULL , 0 TSRMLS_CC );
1280+ }
12841281
1285- add_next_index_zval (return_value , value );
1282+ add_next_index_zval (return_value , value );
1283+ }
12861284 }
12871285 }
12881286
0 commit comments