From 5fc31e82be9ab565c33571b1155a9ce3c222eb63 Mon Sep 17 00:00:00 2001 From: Dwedit Date: Wed, 30 Dec 2020 15:33:27 -0500 Subject: [PATCH 1/2] Fixed a bug that caused extended save state information to be truncated early. --- src/fceu-types.h | 2 +- src/ines.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/fceu-types.h b/src/fceu-types.h index dda3a8e..cc8f7c5 100644 --- a/src/fceu-types.h +++ b/src/fceu-types.h @@ -39,7 +39,7 @@ typedef uint32_t uint32; typedef unsigned long long uint64; typedef long long int64; #define GINLINE inline -#elif MSVC +#elif MSVC | _MSC_VER typedef __int64 int64; typedef unsigned __int64 uint64; #define GINLINE /* Can't declare a function INLINE diff --git a/src/ines.c b/src/ines.c index 9bb3ef7..715d808 100644 --- a/src/ines.c +++ b/src/ines.c @@ -844,7 +844,12 @@ static int iNES_Init(int num) { AddExState(VROM, CHRRAMSize, 0, "CHRR"); } if (head.ROM_type & 8) - AddExState(ExtraNTARAM, 2048, 0, "EXNR"); + { + if (ExtraNTARAM != NULL) + { + AddExState(ExtraNTARAM, 2048, 0, "EXNR"); + } + } tmp->init(&iNESCart); return 1; } From d87f7e5b341d284fbe2ad623b0766dc357d7574a Mon Sep 17 00:00:00 2001 From: Dwedit Date: Wed, 30 Dec 2020 15:50:22 -0500 Subject: [PATCH 2/2] Prevent adding NULL terminator to save state extra list --- src/state.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/state.c b/src/state.c index 35f7d6a..9c452ae 100644 --- a/src/state.c +++ b/src/state.c @@ -324,6 +324,8 @@ void ResetExState(void (*PreSave)(void), void (*PostSave)(void)) void AddExState(void *v, uint32 s, int type, char *desc) { + /* prevent adding a terminator to the list if a NULL pointer was provided */ + if (v == NULL) return; memset(SFMDATA[SFEXINDEX].desc, 0, sizeof(SFMDATA[SFEXINDEX].desc)); if (desc) strncpy(SFMDATA[SFEXINDEX].desc, desc, sizeof(SFMDATA[SFEXINDEX].desc));