From 752bd31a3f4fa9d8a8367c4ea933df18cb1648c4 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Tue, 23 Feb 2016 21:12:07 -0500 Subject: [PATCH] prevent `lda @y` or `lda @x` (which is accepted by the parser) from crashing. --- expressionSemantics.c | 3 ++- operandStuffSD_6502.c | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/expressionSemantics.c b/expressionSemantics.c index 17db853..94fe23d 100644 --- a/expressionSemantics.c +++ b/expressionSemantics.c @@ -1109,7 +1109,8 @@ evaluateExpressionInternally(expressionType *expression, bool isTopLevel, fixupK evaluateExpression(expressionType *expression, fixupKindType kindOfFixup) { valueType *result; - + nullEvaluate(expression); + expressionFailed = FALSE; referencesToNote[currentOperandNumber] = NULL; result = evaluateExpressionInternally(expression, TRUE, kindOfFixup, diff --git a/operandStuffSD_6502.c b/operandStuffSD_6502.c index 7fcd60d..6b36cb5 100644 --- a/operandStuffSD_6502.c +++ b/operandStuffSD_6502.c @@ -299,6 +299,7 @@ evaluateOperand(operandType *operand) case Y_INDEXED_OPND: result = evaluateExpression(operand->theOperand.expressionUnion, performingFixups ? NO_FIXUP : OPERAND_FIXUP); + nullEvaluate(result); if (operand->kindOfOperand != EXPRESSION_OPND) { if (result->addressMode != EXPRESSION_OPND) { error(BAD_ADDRESS_MODE_ERROR);