Skip to content

Commit 7f3d469

Browse files
committed
Fixed a crash in address to line mapping
1 parent fbfe4a1 commit 7f3d469

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

src/asar/assembleblock.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,11 +1201,14 @@ void assembleblock(const char * block, bool isspecialline)
12011201
{
12021202
// RPG Hacker: This makes a pretty big assumption to calculate the size of opcodes.
12031203
// However, this should currently only really be used for pseudo opcodes, where it should always be good enough.
1204-
int opcode_size = ((0xFFFFFF & realsnespos) - addrToLinePos) / recent_opcode_num;
1205-
for (int i = 0; i < recent_opcode_num; ++i)
1204+
if (recent_opcode_num > 0)
12061205
{
1207-
extern AddressToLineMapping addressToLineMapping;
1208-
addressToLineMapping.includeMapping(thisfilename.data(), thisline + 1, addrToLinePos + (i * opcode_size));
1206+
int opcode_size = ((0xFFFFFF & realsnespos) - addrToLinePos) / recent_opcode_num;
1207+
for (int i = 0; i < recent_opcode_num; ++i)
1208+
{
1209+
extern AddressToLineMapping addressToLineMapping;
1210+
addressToLineMapping.includeMapping(thisfilename.data(), thisline + 1, addrToLinePos + (i * opcode_size));
1211+
}
12091212
}
12101213
}
12111214
numopcodes += recent_opcode_num;

tests/pseudo-opcodes.asm

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
;`C8 0A 0A 4A 4A 4A
2+
3+
org $008000
4+
inx #0
5+
iny #1
6+
asl #2
7+
lsr #3

0 commit comments

Comments
 (0)