shithub: orca

Download patch

ref: 2b722c0f67545d6a94f12d1bc132509d46937aaf
parent: fd0c4b9b42bfd84b791b1b61d87d1382e5e1cc40
author: cancel <cancel@cancel.fm>
date: Fri Sep 13 05:14:00 EDT 2019

Fix incorrect capacity adjustment in Oevent list

Was capped at 16 instead of properly growing as it should have.

--- a/bank.c
+++ b/bank.c
@@ -20,7 +20,10 @@
 Oevent* oevent_list_alloc_item(Oevent_list* olist) {
   Usz count = olist->count;
   if (olist->capacity == count) {
-    Usz capacity = count < 16 ? 16 : orca_round_up_power2(count);
+    // Note: no overflow check, but you're probably out of memory if this
+    // happens anyway. Like other uses of realloc in orca, we also don't check
+    // for a failed allocation.
+    Usz capacity = count < 16 ? 16 : orca_round_up_power2(count + 1);
     olist->buffer = realloc(olist->buffer, capacity * sizeof(Oevent));
     olist->capacity = capacity;
   }