From 502a04f05d5d0ef9b1ae0a5e2949da30c3c00a01 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sat, 13 May 2017 07:58:20 +0200
Subject: [PATCH] fix crash in treat_Struct_FullName_Float

---
 Parser/Gmsh.tab.cpp | 5 +++--
 Parser/Gmsh.y       | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index b9b9d48e1c..684bb245be 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -14155,12 +14155,13 @@ double treat_Struct_FullName_Float
       }
       else if (type_var == 2) {
         gmsh_yysymbol &s(gmsh_yysymbols[c2]);
-        if((int)s.value.size() < index + 1){
+        if(index < 0 || (int)s.value.size() < index + 1){
           out = val_default;
           if (type_treat == 0) yymsg(0, "Uninitialized variable '%s[%d]'", c2, index);
         }
-        else
+        else{
           out = s.value[index];
+        }
       }
       else {
         out = val_default;
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index f733ad39e9..1ac1690f83 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -6702,12 +6702,13 @@ double treat_Struct_FullName_Float
       }
       else if (type_var == 2) {
         gmsh_yysymbol &s(gmsh_yysymbols[c2]);
-        if((int)s.value.size() < index + 1){
+        if(index < 0 || (int)s.value.size() < index + 1){
           out = val_default;
           if (type_treat == 0) yymsg(0, "Uninitialized variable '%s[%d]'", c2, index);
         }
-        else
+        else{
           out = s.value[index];
+        }
       }
       else {
         out = val_default;
-- 
GitLab