From 6ad573942ad70b9a11100aebf039ae656c2a21d2 Mon Sep 17 00:00:00 2001 From: Matchman Green Date: Sun, 6 May 2012 23:30:14 +0800 Subject: [PATCH] fixed crash. missing AddRef() --- libgrive/src/xml/Node.cc | 2 +- libgrive/src/xml/Node.hh | 1 + libgrive/test/xml/NodeTest.cc | 3 +-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libgrive/src/xml/Node.cc b/libgrive/src/xml/Node.cc index 082cf2a..eb1a21a 100644 --- a/libgrive/src/xml/Node.cc +++ b/libgrive/src/xml/Node.cc @@ -183,7 +183,7 @@ Node::iterator::iterator( ImplVec::iterator it ) : m_it( it ) Node::iterator::value_type Node::iterator::operator*() const { - return Node( *m_it ) ; + return Node( (*m_it)->AddRef() ) ; } Node::iterator Node::iterator::operator++() diff --git a/libgrive/src/xml/Node.hh b/libgrive/src/xml/Node.hh index 64c4fec..38f8cfb 100644 --- a/libgrive/src/xml/Node.hh +++ b/libgrive/src/xml/Node.hh @@ -89,6 +89,7 @@ public : ImplVec::iterator m_it ; } ; + private : explicit Node( Impl *impl ) ; diff --git a/libgrive/test/xml/NodeTest.cc b/libgrive/test/xml/NodeTest.cc index 0f36ad1..f6f7d1f 100644 --- a/libgrive/test/xml/NodeTest.cc +++ b/libgrive/test/xml/NodeTest.cc @@ -61,7 +61,7 @@ void NodeTest::TestParseFile( ) CPPUNIT_ASSERT_EQUAL( std::string("q"), n["entry"]["link"]["@href"].Value() ) ; CPPUNIT_ASSERT_EQUAL( Node::element, n["entry"]["link"]["href"].GetType() ) ; CPPUNIT_ASSERT_EQUAL( std::string("abc"), n["entry"]["link"]["href"].Value() ) ; -/* + Node el = n["entry"]["link"] ; Node::iterator i = el.begin() ; while ( i != el.end() ) @@ -69,7 +69,6 @@ void NodeTest::TestParseFile( ) CPPUNIT_ASSERT_EQUAL( std::string("href"), (*i).Name() ) ; ++i ; } -*/ } } // end of namespace grut