summaryrefslogtreecommitdiffstats
path: root/ta/ta_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'ta/ta_utils.c')
-rw-r--r--ta/ta_utils.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/ta/ta_utils.c b/ta/ta_utils.c
index 4d1e73fab6..a6b59f2e3d 100644
--- a/ta/ta_utils.c
+++ b/ta/ta_utils.c
@@ -30,6 +30,17 @@ size_t ta_calc_array_size(size_t element_size, size_t count)
return element_size * count;
}
+// This is used when an array has to be enlarged for appending new elements.
+// Return a "good" size for the new array (in number of elements). This returns
+// a value >= nextidx, unless the calculation overflows, in which case SIZE_MAX
+// is returned.
+size_t ta_calc_prealloc_elems(size_t nextidx)
+{
+ if (nextidx >= ((size_t)-1) / 2 - 1)
+ return (size_t)-1;
+ return (nextidx + 1) * 2;
+}
+
static void dummy_dtor(void *p){}
/* Create an empty (size 0) TA allocation, which is prepared in a way such that