From cc094aa7a88765b77c76b9a582359a75a6f39435 Mon Sep 17 00:00:00 2001
From: Patrick Dular <patrick.dular@ulg.ac.be>
Date: Thu, 16 Mar 2017 18:00:20 +0000
Subject: [PATCH] Append for non-existing Struct

---
 Parser/Parser.h | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/Parser/Parser.h b/Parser/Parser.h
index 8ca9cf97fa..ec52388c29 100644
--- a/Parser/Parser.h
+++ b/Parser/Parser.h
@@ -46,10 +46,10 @@ public:
              std::map<std::string, std::vector<std::string> > & copt,
              int member_ValMax)
   {
+    if (tag >= 0) _tag = tag;
+    _member_ValMax = member_ValMax;
     _fopt.insert(fopt.begin(), fopt.end());
     _copt.insert(copt.begin(), copt.end());
-    _member_ValMax = member_ValMax;
-    if (tag >= 0) _tag = tag;
     return _tag;
   }
 
@@ -213,10 +213,13 @@ public:
                 int & tag_out, int member_ValMax, bool append = false)
   {
     Structs * structs_P = &(*this)[key_namespace];
-    if (!append && structs_P->count(key_name)) {
-      tag_out = (*structs_P)[key_name].getTag();
-      return 1; // 1: Error: Redefinition of Struct
+    if (structs_P->count(key_name)) {
+      if (!append) {
+        tag_out = (*structs_P)[key_name].getTag();
+        return 1; // 1: Error: Redefinition of Struct
+      }
     }
+    else if (append) append = false; // non-existing Struct
     tag_out = structs_P->defStruct(key_name, fopt, copt, member_ValMax, append);
     return 0; // 0: no error
   }
-- 
GitLab