Re: [libxml++] NodeList problem.



On Tue, Jun 07, 2005 at 04:14:41PM -0300, Darko Miletic wrote:

> m smart sympatico ca wrote:
> >Hi, I have am trying to use your API with MSVC71. Most things seem to work 
> >okay, but when I have a line of code like the following:
> >
> >    const xmlpp::Node::NodeList& m_nodeList = root->get_children();
> >    xmlpp::Node::NodeList::const_iterator itr = m_nodeList.begin();
> >
> >After running my program through a debugger, I found that it's when 
> >m_nodeList.begin() is called that the problem arises. I can make calls to 
> >m_nodeList.size() and empty() without a problem, it's just the begin one. 
> >The error I get is "The application has requested the runtime to terminate 
> >in an unusual way..."
> >
> >Does anyone know what I am doing wrong? Thanks in advance for any help,
> 
> You do it wrong. get_children return a list container that should 
> contain all children elements. However if there is no children of that 
> node get_children returns empty list. You must check if list contains 
> something. You can do it like this:
> 
>     xmlpp::Node::NodeList nl = node->get_children();
>     if ( !nl.empty() ) {
>       xmlpp::Node::NodeList::iterator it = nl.begin();
>       //other code here
>     }

Surely not?!?!

If the container is empty calling begin() will return an iterator that
compares equal to end().  _dereferencing_ that iterator would be an
error, but not simply copying it.

jon

-- 
"What I tell you three times is true"
	- The Hunting of the Snark




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]