From 3171467052092776e67777e0405c2abc8b2429b9 Mon Sep 17 00:00:00 2001
From: Shreenidhi Shedi <sshedi@vmware.com>
Date: Wed, 1 Sep 2021 21:42:54 +0530
Subject: [PATCH 07/12] Optimize ds_resize logic

Signed-off-by: Shreenidhi Shedi <sshedi@vmware.com>
---
 src/dstring.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/dstring.c b/src/dstring.c
index 8213e13..435bffc 100644
--- a/src/dstring.c
+++ b/src/dstring.c
@@ -51,11 +51,18 @@ ds_free (dynamic_string *string)
 void
 ds_resize (dynamic_string *string, size_t len)
 {
-  while (len + string->ds_idx >= string->ds_size)
-    {
+  len += string->ds_idx;
+
+  if (len >= string->ds_size)
+  {
+      len -= string->ds_size;
+      if (len == 0)
+      {
+          len = 1;
+      }
       string->ds_string = x2nrealloc (string->ds_string, &string->ds_size,
-				      1);
-    }
+                                      len);
+  }
 }
 
 /* Reset the index of the dynamic string S to LEN. */
-- 
2.17.1

