From daf5b1a9aa529e2790278ff339f6f10f9ddd8c40 Mon Sep 17 00:00:00 2001 From: NovaRain Date: Wed, 11 Mar 2020 09:18:39 +0800 Subject: [PATCH] Fixed crash for parser.dll --- parse.c | 12 +++++++----- resource.h | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/parse.c b/parse.c index cfa0bf7..f7fcb48 100644 --- a/parse.c +++ b/parse.c @@ -1139,12 +1139,14 @@ static void term_prime(Procedure *p, NodeList *nodes) { Node *node; // term(p, nodes); factor(p, nodes); - node = &nodes->nodes[nodes->numNodes - 1]; - if ((i == '/' || i == '%' || i == T_DIV2) && node->token == T_CONSTANT && node->value.type != V_STRING && node->value.intData == 0) { - parseSemanticError("Division by zero!"); + if (nodes->numNodes > 0) { // fix crash for DLL + node = &nodes->nodes[nodes->numNodes - 1]; + if ((i == '/' || i == '%' || i == T_DIV2) && node->token == T_CONSTANT && node->value.type != V_STRING && node->value.intData == 0) { + parseSemanticError("Division by zero!"); + } + emitOp(p, nodes, i); + term_prime(p, nodes); } - emitOp(p, nodes, i); - term_prime(p, nodes); } else ungetToken(); } diff --git a/resource.h b/resource.h index 8ea8410..d0515ea 100644 --- a/resource.h +++ b/resource.h @@ -6,10 +6,10 @@ #define VERSION_MAJOR 4 #define VERSION_MINOR 2 -#define VERSION_BUILD 3 +#define VERSION_BUILD 4 #define VERSION_REV 0 -#define VERSION_STRING "4.2.3" +#define VERSION_STRING "4.2.4" #ifdef BUILDING_DLL #define FILE_STRING "parser.dll"