mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
Verify that IFs, REPTs and MACROs are terminated
Ensure that IF constructs, REPT blocks, and MACRO defintions are terminated with ENDC, ENDR, or ENDM respectively. If they are not, print an error and stop assembly. As well as aiding a forgetful programmer, this reduces the risk of memory problems if the file ends less than four bytes after the block starts.
This commit is contained in:
@@ -182,6 +182,10 @@ void copyrept( void )
|
||||
}
|
||||
}
|
||||
|
||||
if (level != 0) {
|
||||
fatalerror("Unterminated REPT block");
|
||||
}
|
||||
|
||||
len=src-pCurrentBuffer->pBuffer-4;
|
||||
|
||||
src=pCurrentBuffer->pBuffer;
|
||||
@@ -257,6 +261,10 @@ void copymacro( void )
|
||||
}
|
||||
}
|
||||
|
||||
if (level != 0) {
|
||||
fatalerror("Unterminated MACRO definition");
|
||||
}
|
||||
|
||||
len=src-pCurrentBuffer->pBuffer-4;
|
||||
|
||||
src=pCurrentBuffer->pBuffer;
|
||||
@@ -348,6 +356,10 @@ void if_skip_to_else( void )
|
||||
}
|
||||
}
|
||||
|
||||
if (level != 0) {
|
||||
fatalerror("Unterminated IF construct");
|
||||
}
|
||||
|
||||
len=src-pCurrentBuffer->pBuffer;
|
||||
|
||||
yyskipbytes( len );
|
||||
@@ -403,6 +415,10 @@ void if_skip_to_endc( void )
|
||||
}
|
||||
}
|
||||
|
||||
if (level != 0) {
|
||||
fatalerror("Unterminated IF construct");
|
||||
}
|
||||
|
||||
len=src-pCurrentBuffer->pBuffer;
|
||||
|
||||
yyskipbytes( len );
|
||||
|
||||
Reference in New Issue
Block a user