From 289c57aef5d88b0b12bce71beb6e238b8ceb8918 Mon Sep 17 00:00:00 2001
From: "Sven M. Hallberg" <pesco@khjk.org>
Date: Wed, 22 May 2013 21:58:34 +0200
Subject: [PATCH] h_stringmap_update wasn't merging results correctly

---
 src/cfgrammar.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/cfgrammar.c b/src/cfgrammar.c
index 896236c2..c965a44e 100644
--- a/src/cfgrammar.c
+++ b/src/cfgrammar.c
@@ -239,6 +239,13 @@ void h_stringmap_put_char(HCFStringMap *m, uint8_t c, void *v)
   h_hashtable_put(m->char_branches, (void *)char_key(c), node);
 }
 
+// helper for h_stringmap_update
+void *combine_stringmap(void *v1, void *v2)
+{
+  h_stringmap_update((HCFStringMap *)v1, (HCFStringMap *)v2);
+  return v1;
+}
+
 void h_stringmap_update(HCFStringMap *m, const HCFStringMap *n)
 {
   if(n->epsilon_branch)
@@ -247,7 +254,7 @@ void h_stringmap_update(HCFStringMap *m, const HCFStringMap *n)
   if(n->end_branch)
     m->end_branch = n->end_branch;
 
-  h_hashtable_update(m->char_branches, n->char_branches);
+  h_hashtable_merge(combine_stringmap, m->char_branches, n->char_branches);
 }
 
 void *h_stringmap_get(const HCFStringMap *m, const uint8_t *str, size_t n, bool end)
-- 
GitLab