diff --git a/src/asm/symbol.c b/src/asm/symbol.c index ae3a7f68..02dc4149 100644 --- a/src/asm/symbol.c +++ b/src/asm/symbol.c @@ -293,23 +293,17 @@ struct sSymbol *sym_FindMacro(char const *s) * hasn't already been defined or referenced in a context that would * require that it be relocatable */ -static struct sSymbol *createNonrelocSymbol(char const *tzSym) +static struct sSymbol *createNonrelocSymbol(char const *symbolName) { - struct sSymbol *nsym = findsymbol(tzSym, NULL); + struct sSymbol *symbol = findsymbol(symbolName, NULL); - if (nsym != NULL) { - if (sym_IsDefined(nsym)) { - yyerror("'%s' already defined at %s(%u)", - tzSym, nsym->tzFileName, nsym->nFileLine); - } else { - yyerror("'%s' referenced as label at %s(%u)", - tzSym, nsym->tzFileName, nsym->nFileLine); - } - } else { - nsym = createsymbol(tzSym); - } + if (!symbol) + symbol = createsymbol(symbolName); + else if (sym_IsDefined(symbol)) + yyerror("'%s' already defined at %s(%u)", symbolName, + symbol->tzFileName, symbol->nFileLine); - return nsym; + return symbol; } /* diff --git a/test/asm/ref-override.asm b/test/asm/ref-override.asm new file mode 100644 index 00000000..dfad75bd --- /dev/null +++ b/test/asm/ref-override.asm @@ -0,0 +1,4 @@ +SECTION "Test", ROM0[0] + db CONSTANT + +CONSTANT equ 42 diff --git a/test/asm/ref-override.err b/test/asm/ref-override.err new file mode 100644 index 00000000..e69de29b diff --git a/test/asm/ref-override.out b/test/asm/ref-override.out new file mode 100644 index 00000000..e69de29b diff --git a/test/asm/ref-override.out.bin b/test/asm/ref-override.out.bin new file mode 100644 index 00000000..f59ec20a --- /dev/null +++ b/test/asm/ref-override.out.bin @@ -0,0 +1 @@ +* \ No newline at end of file