mirror of
https://github.com/gbdev/rgbds.git
synced 2026-05-09 03:19:35 +00:00
Fix segfaults when using PC outside a section
This commit is contained in:
+4
-1
@@ -106,7 +106,10 @@ void rpn_Symbol(struct Expression *expr, char *tzSym)
|
||||
{
|
||||
struct sSymbol *sym = sym_FindSymbol(tzSym);
|
||||
|
||||
if (!sym || !sym_IsConstant(sym)) {
|
||||
if (sym == pPCSymbol && !pPCSymbol->pSection) {
|
||||
yyerror("PC has no value outside a section");
|
||||
rpn_Number(expr, 0);
|
||||
} else if (!sym || !sym_IsConstant(sym)) {
|
||||
rpn_Init(expr);
|
||||
expr->isSymbol = true;
|
||||
|
||||
|
||||
+3
-1
@@ -230,7 +230,9 @@ uint32_t sym_GetConstantValue(char const *s)
|
||||
struct sSymbol const *psym = sym_FindSymbol(s);
|
||||
|
||||
if (psym == pPCSymbol) {
|
||||
if (pCurrentSection->nOrg == -1)
|
||||
if (!pCurrentSection)
|
||||
yyerror("PC has no value outside a section");
|
||||
else if (pCurrentSection->nOrg == -1)
|
||||
yyerror("Expected constant PC but section is not fixed");
|
||||
else
|
||||
return sym_GetValue(psym);
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
assert @ || 1
|
||||
@@ -0,0 +1,3 @@
|
||||
ERROR: assert@-no-sect.asm(1):
|
||||
PC has no value outside a section
|
||||
error: Assembly aborted (1 errors)!
|
||||
@@ -0,0 +1,2 @@
|
||||
if {@}
|
||||
endc
|
||||
@@ -0,0 +1,3 @@
|
||||
ERROR: if@-no-sect.asm(1):
|
||||
PC has no value outside a section
|
||||
error: Assembly aborted (1 errors)!
|
||||
Reference in New Issue
Block a user