From da1b1ee801ef84a19b74d47f68978a8865de1f36 Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Sat, 6 Feb 2010 20:42:14 +0000 Subject: [PATCH] Add shrink buffer code SVN revision: 45946 --- legacy/eina/src/lib/eina_strbuf.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/legacy/eina/src/lib/eina_strbuf.c b/legacy/eina/src/lib/eina_strbuf.c index 4122588d5b..2e60e32872 100644 --- a/legacy/eina/src/lib/eina_strbuf.c +++ b/legacy/eina/src/lib/eina_strbuf.c @@ -425,15 +425,21 @@ _eina_strbuf_resize(Eina_Strbuf *buf, size_t size) new_size += new_step; if (new_step < EINA_STRBUF_MAX_STEP) new_step *= 2; + if (new_step > EINA_STRBUF_MAX_STEP) + new_step = EINA_STRBUF_MAX_STEP; } } else { /* shrink the buffer */ - /* - * to be done - */ - return 1; + while (new_size - new_step > size) + { + new_size -= new_step; + if (new_step > EINA_STRBUF_INIT_STEP) + new_step /= 2; + if (new_step < EINA_STRBUF_INIT_STEP) + new_step = EINA_STRBUF_INIT_STEP; + } } /* reallocate the buffer to the new size */