AXISCPP-227 complex extension support step 1.
diff --git a/src/soap/SoapDeSerializer.cpp b/src/soap/SoapDeSerializer.cpp
index 3d72e5b..9531f64 100644
--- a/src/soap/SoapDeSerializer.cpp
+++ b/src/soap/SoapDeSerializer.cpp
@@ -74,6 +74,8 @@
m_nStatus = AXIS_SUCCESS;
m_nSoapVersion = VERSION_LAST;
+ m_doNotSkip = false;
+
logExit()
}
@@ -1024,7 +1026,9 @@
if (pObject && pDZFunct)
{
try
- {
+ {
+ m_doNotSkip = false;
+
logDebugArg1("Calling object deserializer function for %s", pName)
m_nStatus = ((AXIS_DESERIALIZE_FUNCT) pDZFunct) (pObject, this);
@@ -1033,7 +1037,10 @@
if (AXIS_SUCCESS == m_nStatus)
- skipNode();
+ {
+ if (!m_doNotSkip)
+ skipNode();
+ }
else
{
logDebugArg2("Calling object delete function for %s for object %p", pName, pObject)
@@ -2460,6 +2467,11 @@
*pValue = pSimpleType->getValue();
delete pSimpleType;
}
+ else if (END_ELEMENT == m_pNode->m_type)
+ {
+ m_doNotSkip = true;
+ m_pNode = NULL;
+ }
}
logExit()
diff --git a/src/soap/SoapDeSerializer.h b/src/soap/SoapDeSerializer.h
index 84713fd..8639bdd 100644
--- a/src/soap/SoapDeSerializer.h
+++ b/src/soap/SoapDeSerializer.h
@@ -63,6 +63,8 @@
string m_strMethodNameToInvoke;
+ bool m_doNotSkip;
+
private:
int AXISCALL getArraySize();
public: