Mercurial > repos > blastem
changeset 2476:aaf7bb58ffca
Fix bug in Gen/MD serialize routine that could cause a use-after free in some cases
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 03 Mar 2024 13:47:59 -0800 |
parents | a634985b1df3 |
children | 2972a8e16ed2 |
files | genesis.c |
diffstat | 1 files changed, 9 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/genesis.c Sat Mar 02 15:33:14 2024 -0800 +++ b/genesis.c Sun Mar 03 13:47:59 2024 -0800 @@ -139,13 +139,19 @@ genesis_context *gen = (genesis_context *)sys; uint32_t address; if (gen->m68k->resume_pc) { - gen->m68k->target_cycle = gen->m68k->current_cycle; + gen->header.save_state = SERIALIZE_SLOT+1; - resume_68k(gen->m68k); + while (!gen->serialize_tmp) + { + gen->m68k->target_cycle = gen->m68k->current_cycle + 1; + resume_68k(gen->m68k); + } if (size_out) { *size_out = gen->serialize_size; } - return gen->serialize_tmp; + uint8_t *ret = gen->serialize_tmp; + gen->serialize_tmp = NULL; + return ret; } else { serialize_buffer state; init_serialize(&state);