src/buffer.c

changeset 1542
197450c2b0b3
parent 1539
2cbdb482d325
--- a/src/buffer.c	Fri Dec 05 16:36:10 2025 +0100
+++ b/src/buffer.c	Fri Dec 05 16:38:17 2025 +0100
@@ -210,7 +210,7 @@
 }
 
 int cxBufferReserve(CxBuffer *buffer, size_t newcap) {
-    if (newcap <= buffer->capacity) {
+    if (newcap == buffer->capacity) {
         return 0;
     }
     const int force_copy_flags = CX_BUFFER_COPY_ON_WRITE | CX_BUFFER_COPY_ON_EXTEND;
@@ -225,7 +225,11 @@
         return 0;
     } else if (cxReallocate(buffer->allocator,
                      (void **) &buffer->bytes, newcap) == 0) {
+        buffer->flags |= CX_BUFFER_FREE_CONTENTS;
         buffer->capacity = newcap;
+        if (buffer->size > newcap) {
+            buffer->size = newcap;
+        }
         return 0;
     } else {
         return -1; // LCOV_EXCL_LINE

mercurial