Fix undefined behavior (sequence point modification). GCC 4.6.4 compiles the code incorrectly without this fix.

This commit is contained in:
nattthebear 2017-07-16 21:08:07 -04:00
parent efc11783c7
commit eb7492c6c6

View File

@ -283,7 +283,7 @@ static void jr_r8(GB_gameboy_t *gb, uint8_t opcode)
{ {
/* Todo: Verify cycles are not 8 and 4 instead */ /* Todo: Verify cycles are not 8 and 4 instead */
GB_advance_cycles(gb, 4); GB_advance_cycles(gb, 4);
gb->pc += (int8_t) GB_read_memory(gb, gb->pc++); gb->pc += (int8_t)GB_read_memory(gb, gb->pc) + 1;
GB_advance_cycles(gb, 8); GB_advance_cycles(gb, 8);
} }
@ -307,7 +307,7 @@ static void jr_cc_r8(GB_gameboy_t *gb, uint8_t opcode)
{ {
if (condition_code(gb, opcode)) { if (condition_code(gb, opcode)) {
GB_advance_cycles(gb, 4); GB_advance_cycles(gb, 4);
gb->pc += (int8_t)GB_read_memory(gb, gb->pc++); gb->pc += (int8_t)GB_read_memory(gb, gb->pc) + 1;
GB_advance_cycles(gb, 8); GB_advance_cycles(gb, 8);
} }
else { else {