From 3765fd64e1b2d0f15ac689f5ee3af9939b26ada5 Mon Sep 17 00:00:00 2001
From: "Sven M. Hallberg" <pesco@khjk.org>
Date: Thu, 29 Oct 2015 13:12:16 +0100
Subject: [PATCH] don't pre-allocate all space when parsing an h_length_value

---
 src/parsers/many.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/parsers/many.c b/src/parsers/many.c
index 6496bbe6..071e3fcd 100644
--- a/src/parsers/many.c
+++ b/src/parsers/many.c
@@ -10,7 +10,10 @@ typedef struct {
 
 static HParseResult *parse_many(void* env, HParseState *state) {
   HRepeat *env_ = (HRepeat*) env;
-  HCountedArray *seq = h_carray_new_sized(state->arena, (env_->count > 0 ? env_->count : 4));
+  size_t size = env_->count;
+  if(size <= 0) size = 4;
+  if(size > 1024) size = 1024;  // let's try parsing some elements first...
+  HCountedArray *seq = h_carray_new_sized(state->arena, size);
   size_t count = 0;
   HInputStream bak;
   while (env_->min_p || env_->count > count) {
-- 
GitLab