Index: ext/libicpf/src/cfg_xml.cpp =================================================================== diff -u -N -rd5bb2e19e22f57bd018e9db355108b54dfbc364c -r9bdff2e0b309af11014634d8c38367e4f6b656e3 --- ext/libicpf/src/cfg_xml.cpp (.../cfg_xml.cpp) (revision d5bb2e19e22f57bd018e9db355108b54dfbc364c) +++ ext/libicpf/src/cfg_xml.cpp (.../cfg_xml.cpp) (revision 9bdff2e0b309af11014634d8c38367e4f6b656e3) @@ -77,7 +77,7 @@ * \param[in] name - name of the tag being processed * \param[in] attrs - array of pointers to strings with attributes and their values */ -void XMLCALL element_start(void *userData, const tchar_t *name, const tchar_t **attrs) +void xml_cfg::element_start(void *userData, const tchar_t *name, const tchar_t **attrs) { XMLSTATE* pState=(XMLSTATE*)userData; @@ -95,7 +95,11 @@ if (bContainer) { - std::pair pr=pState->pNode->m_mNodes.insert(xml_storage::value_type(tstring_t(name), xml_node(pState->pNode))); + std::pair pr; + if (pState->pNode) + pr=pState->pNode->m_mNodes.insert(xml_storage::value_type(tstring_t(name), xml_node(pState->pNode))); + else + pr=((xml_storage*)pState->pCfg->m_hStorage)->insert(xml_storage::value_type(tstring_t(name), xml_node(pState->pNode))); pState->pNode=&((*pr.first).second); } } @@ -105,7 +109,7 @@ * \param[in] userData - user defined parameter * \param[in] name - name of the tag being closed */ -void XMLCALL element_end(void *userData, const XML_Char* /*name*/) +void xml_cfg::element_end(void *userData, const tchar_t* /*name*/) { XMLSTATE* pState=(XMLSTATE*)userData; @@ -139,7 +143,7 @@ XML_SetElementHandler(parser, element_start, element_end); // XML_SetCharacterDataHandler(parser, element_content); - XMLSTATE xs = { this }; + XMLSTATE xs = { this, NULL }; XML_SetUserData(parser, &xs); for (;;)