From ce05175372a9ddca1a225db0765ace1127a39293 Mon Sep 17 00:00:00 2001 From: Nicholas Date: Fri, 12 Nov 2021 09:22:01 -0800 Subject: chore: simplified organizational structure --- src/base/string/fit.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/base/string/fit.c (limited to 'src/base/string/fit.c') diff --git a/src/base/string/fit.c b/src/base/string/fit.c new file mode 100644 index 0000000..56ab041 --- /dev/null +++ b/src/base/string/fit.c @@ -0,0 +1,20 @@ +#include "internal.h" + +// fit reallocates the string such that the buffer is exactly sized for the +// buffer. if the capacity equals the length, then the function is a noop. the +// byte array is unchanged. +void +str·fit(string *s) +{ + Hdr* h; + vlong cap = str·cap(*s); + vlong len = str·len(*s); + + if (cap == len) return; + + h = (Hdr*)(s - sizeof(Hdr)); + h = realloc(h, sizeof(*h) + len + 1); + h->cap = len; + + *s = h->buf; +} -- cgit v1.2.1