From 6b6cdd940548fa8fb20dcdf251e59c27a8e133a8 Mon Sep 17 00:00:00 2001 From: Victor Zverovich Date: Sun, 21 Sep 2025 12:51:06 -0700 Subject: [PATCH] Store size in a local variable while unchanged --- include/fmt/base.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/include/fmt/base.h b/include/fmt/base.h index 7c937691..a1ddd537 100644 --- a/include/fmt/base.h +++ b/include/fmt/base.h @@ -1844,15 +1844,17 @@ template class buffer { void append(const U* begin, const U* end) { while (begin != end) { - auto free_cap = capacity_ - size_; + auto size = size_; + auto free_cap = capacity_ - size; auto count = to_unsigned(end - begin); if (free_cap < count) { - grow_(*this, size_ + count); - free_cap = capacity_ - size_; - count = (count < free_cap) ? count : free_cap; + grow_(*this, size + count); + size = size_; + free_cap = capacity_ - size; + count = count < free_cap ? count : free_cap; } // A loop is faster than memcpy on small sizes. - T* out = ptr_ + size_; + T* out = ptr_ + size; for (size_t i = 0; i < count; ++i) out[i] = begin[i]; size_ += count; begin += count;