From a26a6a56d08fd38b297a4ac022b9053f6f1ca94b Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Fri, 10 Feb 2023 11:49:59 +0000 Subject: [PATCH] Patched a pre/postfix increment/decrement segfault --- source/toy_parser.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source/toy_parser.c b/source/toy_parser.c index b1a2f85..b6aa691 100644 --- a/source/toy_parser.c +++ b/source/toy_parser.c @@ -676,6 +676,10 @@ static Toy_Opcode incrementPrefix(Toy_Parser* parser, Toy_ASTNode** nodeHandle) Toy_ASTNode* tmpNode = NULL; identifier(parser, &tmpNode); + if (!tmpNode) { + return TOY_OP_EOF; + } + Toy_emitASTNodePrefixIncrement(nodeHandle, tmpNode->atomic.literal); Toy_freeASTNode(tmpNode); @@ -689,6 +693,10 @@ static Toy_Opcode incrementInfix(Toy_Parser* parser, Toy_ASTNode** nodeHandle) { advance(parser); + if (!tmpNode) { + return TOY_OP_EOF; + } + Toy_emitASTNodePostfixIncrement(nodeHandle, tmpNode->atomic.literal); Toy_freeASTNode(tmpNode); @@ -700,7 +708,11 @@ static Toy_Opcode decrementPrefix(Toy_Parser* parser, Toy_ASTNode** nodeHandle) advance(parser); Toy_ASTNode* tmpNode = NULL; - identifier(parser, &tmpNode); //weird + identifier(parser, &tmpNode); + + if (!tmpNode) { + return TOY_OP_EOF; + } Toy_emitASTNodePrefixDecrement(nodeHandle, tmpNode->atomic.literal); @@ -715,6 +727,10 @@ static Toy_Opcode decrementInfix(Toy_Parser* parser, Toy_ASTNode** nodeHandle) { advance(parser); + if (!tmpNode) { + return TOY_OP_EOF; + } + Toy_emitASTNodePostfixDecrement(nodeHandle, tmpNode->atomic.literal); Toy_freeASTNode(tmpNode);