diff --git a/include/rapidjson/document.h b/include/rapidjson/document.h index 44a492b..9615004 100644 --- a/include/rapidjson/document.h +++ b/include/rapidjson/document.h @@ -885,7 +885,7 @@ public: } else { SizeType oldCapacity = o.capacity; - o.capacity += (oldCapacity >> 1); // grow by factor 1.5 + o.capacity += (oldCapacity + 1) / 2; // grow by factor 1.5 o.members = reinterpret_cast(allocator.Realloc(o.members, oldCapacity * sizeof(Member), o.capacity * sizeof(Member))); } } @@ -1130,7 +1130,7 @@ int z = a[0u].GetInt(); // This works too. GenericValue& PushBack(GenericValue& value, Allocator& allocator) { RAPIDJSON_ASSERT(IsArray()); if (data_.a.size >= data_.a.capacity) - Reserve(data_.a.capacity == 0 ? kDefaultArrayCapacity : (data_.a.capacity + (data_.a.capacity >> 1)), allocator); + Reserve(data_.a.capacity == 0 ? kDefaultArrayCapacity : (data_.a.capacity + (data_.a.capacity + 1) / 2), allocator); data_.a.elements[data_.a.size++].RawAssign(value); return *this; }