From f148a9d90d6581768c5197dc4e777edc0f6baf0d Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Fri, 10 May 2013 11:18:03 +0430 Subject: [PATCH] sbuf: decrease the default sbuf struct buffer size --- sbuf.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/sbuf.c b/sbuf.c index 585984d..2c5d281 100644 --- a/sbuf.c +++ b/sbuf.c @@ -4,21 +4,22 @@ #include #include "xroff.h" -#define SBUF_SZ 1024 +#define SBUF_SZ 512 -void sbuf_init(struct sbuf *sbuf) +static void sbuf_extend(struct sbuf *sbuf, int amount) { - sbuf->s = malloc(SBUF_SZ); - sbuf->sz = SBUF_SZ; - sbuf->n = 0; + char *s = sbuf->s; + sbuf->sz = (MAX(1, amount) + SBUF_SZ - 1) & ~(SBUF_SZ - 1); + sbuf->s = malloc(sbuf->sz); + if (sbuf->n) + memcpy(sbuf->s, s, sbuf->n); + free(s); } -static void sbuf_extend(struct sbuf *sbuf, int amount) +void sbuf_init(struct sbuf *sbuf) { - char *s = sbuf->s; - sbuf->s = malloc(amount); - sbuf->sz = amount; - memcpy(sbuf->s, s, sbuf->n); + memset(sbuf, 0, sizeof(*sbuf)); + sbuf_extend(sbuf, SBUF_SZ); } void sbuf_add(struct sbuf *sbuf, int c) -- 2.11.4.GIT