xplist: Prevent unnecessary reallocations when writing XML output
diff --git a/src/xplist.c b/src/xplist.c
index 29b1284..739b5ab 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -293,7 +293,10 @@
             uint32_t maxread = ((76 - indent*8) / 4) * 3;
             size_t count = 0;
             size_t b64count = 0;
-            str_buf_grow(*outbuf, (node_data->length / 3 * 4) + 4 + (((node_data->length / maxread) + 1) * (indent+1)));
+            size_t amount = (node_data->length / 3 * 4) + 4 + (((node_data->length / maxread) + 1) * (indent+1));
+            if ((*outbuf)->len + amount > (*outbuf)->capacity) {
+                str_buf_grow(*outbuf, amount);
+            }
             while (j < node_data->length) {
                 for (i = 0; i < indent; i++) {
                     str_buf_append(*outbuf, "\t", 1);