summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorMitya Selivanov <automainint@guattari.tech>2023-03-28 06:50:55 +0200
committerMitya Selivanov <automainint@guattari.tech>2023-03-28 06:50:55 +0200
commit2cb2ba5349679437457fe63566fab81fde669d76 (patch)
tree3b3e91477aa5504b73c5be19ff8113c1394fc4c7 /source
parent4126fa433baedc37c90f6984db5beb73d45ad3a6 (diff)
downloadkit-2cb2ba5349679437457fe63566fab81fde669d76.zip
Banbarian strings. 8 buffers.
Diffstat (limited to 'source')
-rw-r--r--source/kit/string_ref.h14
1 files changed, 9 insertions, 5 deletions
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__