Integrated part of Patch #2839016, fixing default iterator initialization when using internal map.
diff --git a/include/json/value.h b/include/json/value.h
index 72fcabd..ce3d3cd 100644
--- a/include/json/value.h
+++ b/include/json/value.h
@@ -637,6 +637,13 @@
# 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 @@
# 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_;
diff --git a/src/lib_json/json_valueiterator.inl b/src/lib_json/json_valueiterator.inl
index d6cc031..898c358 100644
--- a/src/lib_json/json_valueiterator.inl
+++ b/src/lib_json/json_valueiterator.inl
@@ -14,11 +14,15 @@
#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