Integrated part of Patch #2839016, fixing default iterator initialization when using internal map.

This commit is contained in:
Baptiste Lepilleur 2010-01-15 14:56:59 +00:00
parent 2bcfb63362
commit 4a5e58c4f4
2 changed files with 20 additions and 3 deletions

View File

@ -637,6 +637,13 @@ namespace Json {
# ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
struct IteratorState
{
IteratorState()
: map_(0)
, link_(0)
, itemIndex_(0)
, bucketIndex_(0)
{
}
ValueInternalMap *map_;
ValueInternalLink *link_;
BucketIndex itemIndex_;
@ -729,6 +736,12 @@ namespace Json {
# ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
struct IteratorState // Must be a POD
{
IteratorState()
: array_(0)
, currentPageIndex_(0)
, currentItemIndex_(0)
{
}
ValueInternalArray *array_;
Value **currentPageIndex_;
unsigned int currentItemIndex_;

View File

@ -14,11 +14,15 @@ ValueIteratorBase::ValueIteratorBase()
#ifndef JSON_VALUE_USE_INTERNAL_MAP
: current_()
, isNull_( true )
#else
# error fix me // Need to handle uninitialized iterator comparison for experimental maps
#endif
{
}
#else
: isArray_( true )
, isNull_( true )
{
iterator_.array_ = ValueInternalArray::IteratorState();
}
#endif
#ifndef JSON_VALUE_USE_INTERNAL_MAP