[Quickfix-developers] Qs re: libxml_domdocument.cpp
Brought to you by:
orenmnero
From: Brendan B. B. <br...@ka...> - 2004-06-16 14:28:12
|
Hello, Wanting to dip my toe in XML parsing I decided to work w/QuickFIX's DOM wrapper of {MS,LIB}XML to create a simple app which would walk the document tree. In doing so I think I may have found a couple of bugs. 1. Constructing a std::string based on a NULL ptr generates a SIG<something> using gcc v3.3.x (Cygwin) and v3.4.0 (Fedora): In DOMAttributes::map LIBXML_DOMAttributes::toMap() { ... #if 1 // brendan, 6/11/04 std::string name; if (attr->name) name = (char*)attr->name; #else std::string name = (char*)attr->name; #endif // #if 1 ... } Same is true for: std::string LIBXML_DOMNode::getName() std::string LIBXML_DOMNode::getText() 2. Walking the tree is skipping nodes: DOMNodePtr LIBXML_DOMNode::getFirstChildNode() { if( !m_pNode->children ) return DOMNodePtr(); // brendan, 6/12/04 // xmlNodePtr pNode = m_pNode->children->next; xmlNodePtr pNode = m_pNode->children; ... } DOMNodePtr LIBXML_DOMNode::getNextSiblingNode() { if( !m_pNode->next ) return DOMNodePtr(); // brendan, 6/12/04 //xmlNodePtr pNode = m_pNode->next->next; xmlNodePtr pNode = m_pNode->next; ... } 3. Incorrect QF_PUSH_STACK e.g. DOMNodePtr LIBXML_DOMNode::getFirstChildNode() { QF_STACK_PUSH(LIBXML_DOMAttributes::getFirstChildNode) This is true for LIBXML_DOMNode and LIBXML_DOMDocument. If I'm incorrect, please feel free to set me straight. Thanks! Brendan |