From de4b21757e47e1fd6524da4ed5f8996bbbec233e Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" <pesco@khjk.org> Date: Fri, 24 May 2013 22:38:14 +0200 Subject: [PATCH] make sure h_string_update copies its subtrees --- src/cfgrammar.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/cfgrammar.c b/src/cfgrammar.c index d774dd09..e9c9d5dc 100644 --- a/src/cfgrammar.c +++ b/src/cfgrammar.c @@ -248,12 +248,18 @@ void h_stringmap_put_char(HCFStringMap *m, uint8_t c, void *v) } // helper for h_stringmap_update -static void *combine_stringmap(void *v1, void *v2) +static void *combine_stringmap(void *v1, const void *v2) { - h_stringmap_update((HCFStringMap *)v1, (HCFStringMap *)v2); - return v1; + HCFStringMap *m1 = v1; + const HCFStringMap *m2 = v2; + if(!m1) + m1 = h_stringmap_new(m2->arena); + h_stringmap_update(m1, m2); + + return m1; } +/* Note: Does *not* reuse submaps from n in building m. */ void h_stringmap_update(HCFStringMap *m, const HCFStringMap *n) { if(n->epsilon_branch) -- GitLab