ref: 75ce230dced14c4a622d20e41738474193a8817a
parent: 1d012682497e5060df257a12c2a3e3388d43e4ab
author: ISSOtm <[email protected]>
date: Sun May 2 19:57:03 EDT 2021
Make UNION-related errors non-fatal
--- a/src/asm/section.c
+++ b/src/asm/section.c
@@ -534,10 +534,14 @@
void sect_StartUnion(void)
{
- if (!currentSection)
- fatalerror("UNIONs must be inside a SECTION\n");
- if (sect_HasData(currentSection->type))
- fatalerror("Cannot use UNION inside of ROM0 or ROMX sections\n");
+ if (!currentSection) {
+ error("UNIONs must be inside a SECTION\n");
+ return;
+ }
+ if (sect_HasData(currentSection->type)) {
+ error("Cannot use UNION inside of ROM0 or ROMX sections\n");
+ return;
+ }
struct UnionStackEntry *entry = malloc(sizeof(*entry));
if (!entry)
@@ -559,15 +563,19 @@
void sect_NextUnionMember(void)
{
- if (!unionStack)
- fatalerror("Found NEXTU outside of a UNION construct\n");
+ if (!unionStack) {
+ error("Found NEXTU outside of a UNION construct\n");
+ return;
+ }
endUnionMember();
}
void sect_EndUnion(void)
{
- if (!unionStack)
- fatalerror("Found ENDU outside of a UNION construct\n");
+ if (!unionStack) {
+ error("Found ENDU outside of a UNION construct\n");
+ return;
+ }
endUnionMember();
curOffset += unionStack->size;
struct UnionStackEntry *next = unionStack->next;