Check if parent exists for local label reference

If an attempt is made to reference a local label before any non-local label
is defined, raise an error instead of segfaulting.
This commit is contained in:
dbrotz
2019-08-20 09:57:53 -07:00
parent e33e6e2413
commit a6bf77718c
4 changed files with 10 additions and 0 deletions

View File

@@ -735,6 +735,9 @@ void sym_Ref(char *tzSym)
int isLocal = 0; int isLocal = 0;
if (*tzSym == '.') { if (*tzSym == '.') {
if (!pScope)
fatalerror("Local label reference '%s' in main scope",
tzSym);
fullSymbolName(fullname, sizeof(fullname), tzSym, fullSymbolName(fullname, sizeof(fullname), tzSym,
pScope); pScope);
tzSym = fullname; tzSym = fullname;

View File

@@ -0,0 +1,3 @@
SECTION "sec", ROM0
dw .test

View File

@@ -0,0 +1,2 @@
ERROR: local-ref-without-parent.asm(3):
Local label reference '.test' in main scope

View File

@@ -0,0 +1,2 @@
ERROR: -(3):
Local label reference '.test' in main scope