diff options
Diffstat (limited to 'axiom')
-rw-r--r-- | axiom/src/om/om_node.c | 12 | ||||
-rw-r--r-- | axiom/src/soap/soap_builder.c | 5 |
2 files changed, 14 insertions, 3 deletions
diff --git a/axiom/src/om/om_node.c b/axiom/src/om/om_node.c index 50aac77..d32949c 100644 --- a/axiom/src/om/om_node.c +++ b/axiom/src/om/om_node.c @@ -1139,8 +1139,16 @@ axiom_node_get_next_sibling( return NULL; } - while(!(om_node->next_sibling) && om_node->parent && om_node->builder - && !(axiom_node_is_complete(om_node->parent, env))) + /* we have to build the tree using stax builder if + * (1) om_node's next_sibling is not given (if available, we can just return that) + * (2) om_node is having a parent (otherwise, no concept of sibling) + * (3) om_node is having a stax builder (otherwise, it is a programatically built node) + * (4) parent is having a stax builder (otherwise, om_node is the only child, + * or sibling is programatically created) + * (5) parent is not yet fully built + */ + while((!om_node->next_sibling) && om_node->parent && om_node->parent->builder + && om_node->builder && (!axiom_node_is_complete(om_node->parent, env))) { token = axiom_stax_builder_next_with_token(om_node->builder, env); if(token == -1) diff --git a/axiom/src/soap/soap_builder.c b/axiom/src/soap/soap_builder.c index f8236ad..2496506 100644 --- a/axiom/src/soap/soap_builder.c +++ b/axiom/src/soap/soap_builder.c @@ -315,7 +315,10 @@ axiom_soap_builder_next( int current_event = AXIS2_MAX_EVENT; int status = AXIS2_SUCCESS; - if((!soap_builder) || (soap_builder->done) || (!soap_builder->om_builder)) + AXIS2_ASSERT(soap_builder != NULL); + AXIS2_ASSERT(soap_builder->om_builder != NULL); + + if(soap_builder->done) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Invalid soap builder"); return AXIS2_FAILURE; |