tsbuf: extend the buffer more eagerly - neatvi - [fork] simple vi-type editor with UTF-8 support
(HTM) git clone git://src.adamsgaard.dk/neatvi
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit d45220ca72fc434031d68ec33a553de6ebf0262e
(DIR) parent 5266f5c8be4e977eaac06ea4a978d13c9b378d28
(HTM) Author: Ali Gholami Rudi <ali@rudi.ir>
Date: Thu, 11 Jun 2015 15:41:18 +0430
sbuf: extend the buffer more eagerly
Diffstat:
M sbuf.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
---
(DIR) diff --git a/sbuf.c b/sbuf.c
t@@ -7,6 +7,7 @@
#define SBUFSZ 128
#define ALIGN(n, a) (((n) + (a) - 1) & ~((a) - 1))
+#define NEXTSZ(o, r) ALIGN(MAX((o) * 2, (o) + (r)), SBUFSZ)
struct sbuf {
char *s; /* allocated buffer */
t@@ -55,14 +56,14 @@ void sbuf_free(struct sbuf *sb)
void sbuf_chr(struct sbuf *sbuf, int c)
{
if (sbuf->s_n + 2 >= sbuf->s_sz)
- sbuf_extend(sbuf, sbuf->s_sz + SBUFSZ);
+ sbuf_extend(sbuf, NEXTSZ(sbuf->s_sz, 1));
sbuf->s[sbuf->s_n++] = c;
}
void sbuf_mem(struct sbuf *sbuf, char *s, int len)
{
if (sbuf->s_n + len + 1 >= sbuf->s_sz)
- sbuf_extend(sbuf, ALIGN(sbuf->s_n + len + 1, SBUFSZ));
+ sbuf_extend(sbuf, NEXTSZ(sbuf->s_sz, len + 1));
memcpy(sbuf->s + sbuf->s_n, s, len);
sbuf->s_n += len;
}