From 2cb2ba5349679437457fe63566fab81fde669d76 Mon Sep 17 00:00:00 2001 From: Mitya Selivanov Date: Tue, 28 Mar 2023 06:50:55 +0200 Subject: Banbarian strings. 8 buffers. --- include/kit.inl.h | 14 +++++++++----- source/kit/string_ref.h | 14 +++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/include/kit.inl.h b/include/kit.inl.h index 4c50c24..da2583d 100644 --- a/include/kit.inl.h +++ b/include/kit.inl.h @@ -326,15 +326,19 @@ static kit_str_t kit_str(ptrdiff_t const size, /* Make a barbarian string for C standard library functions. * Not thread safe. + * Use with caution. */ static char const *kit_make_bs(kit_str_t const s) { - static char buf[4096]; - ptrdiff_t n = s.size; + static char buf[8][4096]; + static int index = 0; + ptrdiff_t n = s.size; if (n > 4095) n = 4095; - memcpy(buf, s.values, n); - buf[n] = '\0'; - return buf; + memcpy(buf[index], s.values, n); + buf[index][n] = '\0'; + char const *result = buf[index]; + index = (index + 1) % 8; + return result; } #ifdef __GNUC__ diff --git a/source/kit/string_ref.h b/source/kit/string_ref.h index 6c89292..5584880 100644 --- a/source/kit/string_ref.h +++ b/source/kit/string_ref.h @@ -30,15 +30,19 @@ static kit_str_t kit_str(ptrdiff_t const size, /* Make a barbarian string for C standard library functions. * Not thread safe. + * Use with caution. */ static char const *kit_make_bs(kit_str_t const s) { - static char buf[4096]; - ptrdiff_t n = s.size; + static char buf[8][4096]; + static int index = 0; + ptrdiff_t n = s.size; if (n > 4095) n = 4095; - memcpy(buf, s.values, n); - buf[n] = '\0'; - return buf; + memcpy(buf[index], s.values, n); + buf[index][n] = '\0'; + char const *result = buf[index]; + index = (index + 1) % 8; + return result; } #ifdef __GNUC__ -- cgit v1.2.3