From b2d523acde93862fd28adcae51b9f15536d60b28 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 1 Feb 2014 20:50:39 -0500 Subject: [PATCH] rgbasm: Evaluate BANK() arguments to verify they exist. Symbols are created when using a label in the wild, even if they aren't defined. Solely using a symbol as an argument to BANK() skips this, so the symbol is never created. This evaluates the argument instead of trying to find a symbol. This way, symbols that don't exist are created when passed into BANK(). --- src/asm/rpn.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/asm/rpn.c b/src/asm/rpn.c index e7c7f9e7..a30cbdac 100644 --- a/src/asm/rpn.c +++ b/src/asm/rpn.c @@ -149,14 +149,11 @@ void rpn_Bank(struct Expression * expr, char *tzSym) { if (!sym_isConstant(tzSym)) { - struct sSymbol *psym; - rpn_Reset(expr); - psym = sym_FindSymbol(tzSym); - if (nPass == 2 && psym == NULL) { - yyerror("'%s' not defined", tzSym); - } + /* Check that the symbol exists by evaluating and discarding the value. */ + sym_GetValue(tzSym); + expr->isReloc = 1; pushbyte(expr, RPN_BANK); while (*tzSym)