Hi all,
After much debugging I have found why an access violation is being caused in
my WSDL2C-generated code.
While processing the following document: (http : // removed due to problems
with my emails being flagged as spam)
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<BrokerInformationResponse xmlns:xsi="
www.w3.org/2001/XMLSchema-instance"
xmlns="
www.axa.ca/BrokerInformationService/1.0/BrokerInformationResponse"
xmlns:xsd="www.w3.org/2001/XMLSchema"
xmlns:soap="schemas.xmlsoap.org/soap/envelope/">
<TrackingNumber>UNKNOWN</TrackingNumber>
<Status>
<Status xmlns="">ERROR</Status>
<Detail xmlns="">
<Code>ERROR</Code>
<Description>Could not unbind Request from
XML!</Description>
</Detail>
</Status>
</BrokerInformationResponse>
</soapenv:Body>
</soapenv:Envelope>
During construction of the node tree representing this document, an om_text
data element is created to hold the text "ERROR" in the first Status
element. This om_text element is then assigned to the data_element member
of the axiom_node_t representing the first Status element on the following
line:
(line 603 of axiom\src\om\om_text.c:)
axiom_node_set_data_element((*node), env, om_text);
The node_type element of this node is correctly set to 8 (AXIOM_TEXT).
however during deserialization in the WSDL2C generated code, the same data
element is read into an axiom_element_t * defined as:
axiom_element_t *current_element = NULL;
in the following line:
current_element = axiom_node_get_data_element( current_node, env);
followed by a call which attempts to read the string value of
(axiom_element_t *)current_element->ns->prefix:
qname = axiom_element_get_qname( current_element, env, current_node);
which causes an access violation.
I would like to help with debugging the WSDL2C tool but my time on this
project doesn't allow it at the moment. If the information above isn't
detailed enough I'll gladly clarify so the problem can be fixed.
Carl