Tighten resize() postcondition assert from >= to ==

std::vector::resize(n) (and string_t's resize) is required to make
size() exactly n; only capacity() is permitted to overshoot. The
destination-size assert in get_bytes should reflect that exact guarantee
rather than a weaker `>=`.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Niels Lohmann
2026-07-05 10:42:28 +02:00
co-authored by Claude Opus 4.8
parent 0c8ec0a2fc
commit e36340da39
2 changed files with 6 additions and 6 deletions
+3 -3
View File
@@ -13176,9 +13176,9 @@ class binary_reader
: chunk_size;
const std::size_t old_size = result.size();
result.resize(old_size + wanted);
// the destination now has room for `wanted` bytes at offset
// old_size, which is what get_elements() is allowed to write
JSON_ASSERT(result.size() >= old_size + wanted);
// resize() is required to make size() exactly old_size + wanted;
// that is the room get_elements() is allowed to write into
JSON_ASSERT(result.size() == old_size + wanted);
const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
chars_read += bytes_read;
if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))