diff options
author | arseny.kapoulkine@gmail.com <arseny.kapoulkine@gmail.com@99668b35-9821-0410-8761-19e4c4f06640> | 2012-05-02 15:38:09 +0000 |
---|---|---|
committer | arseny.kapoulkine@gmail.com <arseny.kapoulkine@gmail.com@99668b35-9821-0410-8761-19e4c4f06640> | 2012-05-02 15:38:09 +0000 |
commit | a9a537ad4024fe5011d38ce6ae2160081c361285 (patch) | |
tree | 0bf8382389a94be395ba3bbfc2e0572869362f23 /src | |
parent | a50f47f8056ffbb5fc52f2db07858c7dcd511d2e (diff) |
Iterator improvements: safety assertions in xml_named_node_iterator, const_cast workaround for BCC32 bugv1.2
git-svn-id: http://pugixml.googlecode.com/svn/trunk@915 99668b35-9821-0410-8761-19e4c4f06640
Diffstat (limited to 'src')
-rw-r--r-- | src/pugixml.cpp | 9 | ||||
-rw-r--r-- | src/pugixml.hpp | 1 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 7dadede..4035ab1 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -4928,7 +4928,7 @@ namespace pugi PUGI__FN xml_node* xml_node_iterator::operator->() const { assert(_wrap._root); - return &_wrap; + return const_cast<xml_node*>(&_wrap); // BCC32 workaround } PUGI__FN const xml_node_iterator& xml_node_iterator::operator++() @@ -4989,7 +4989,7 @@ namespace pugi PUGI__FN xml_attribute* xml_attribute_iterator::operator->() const { assert(_wrap._attr); - return &_wrap; + return const_cast<xml_attribute*>(&_wrap); // BCC32 workaround } PUGI__FN const xml_attribute_iterator& xml_attribute_iterator::operator++() @@ -5039,16 +5039,19 @@ namespace pugi PUGI__FN xml_node& xml_named_node_iterator::operator*() const { + assert(_node._root); return _node; } PUGI__FN xml_node* xml_named_node_iterator::operator->() const { - return &_node; + assert(_node._root); + return const_cast<xml_node*>(&_node); // BCC32 workaround } PUGI__FN const xml_named_node_iterator& xml_named_node_iterator::operator++() { + assert(_node._root); _node = _node.next_sibling(_name); return *this; } diff --git a/src/pugixml.hpp b/src/pugixml.hpp index 51e456f..77b4dcf 100644 --- a/src/pugixml.hpp +++ b/src/pugixml.hpp @@ -359,6 +359,7 @@ namespace pugi { friend class xml_attribute_iterator; friend class xml_node_iterator; + friend class xml_named_node_iterator; protected: xml_node_struct* _root; |