From faebe355a82733f4cb4383ec492ec2155ab7f0a5 Mon Sep 17 00:00:00 2001
From: "Sven M. Hallberg" <pesco@khjk.org>
Date: Thu, 23 May 2013 22:53:45 +0200
Subject: [PATCH] fix h_stringmap_replace for the all-values case

---
 src/cfgrammar.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/cfgrammar.c b/src/cfgrammar.c
index 911c0eb5..9abfd10e 100644
--- a/src/cfgrammar.c
+++ b/src/cfgrammar.c
@@ -271,11 +271,13 @@ void h_stringmap_update(HCFStringMap *m, const HCFStringMap *n)
  */
 void h_stringmap_replace(HCFStringMap *m, void *old, void *new)
 {
-  if(!old || m->epsilon_branch == old)
-    m->epsilon_branch = new;
-
-  if(!old || m->end_branch == old)
-    m->end_branch = new;
+  if(!old) {
+    if(m->epsilon_branch) m->epsilon_branch = new;
+    if(m->end_branch)     m->end_branch = new;
+  } else {
+    if(m->epsilon_branch == old) m->epsilon_branch = new;
+    if(m->end_branch == old)     m->end_branch = new;
+  }
 
   // iterate over m->char_branches
   const HHashTable *ht = m->char_branches;
-- 
GitLab