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