diff --git a/src/fceu-types.h b/src/fceu-types.h index 53c5ec5..86def23 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 9c23c7e..69dabaf 100644 --- a/src/ines.c +++ b/src/ines.c @@ -1099,7 +1099,12 @@ static int iNES_Init(int num) { } } if (head.ROM_type & 8) - AddExState(ExtraNTARAM, 2048, 0, "EXNR"); + { + if (ExtraNTARAM != NULL) + { + AddExState(ExtraNTARAM, 2048, 0, "EXNR"); + } + } tmp->init(&iNESCart); return 1; } diff --git a/src/state.c b/src/state.c index 1c14a8d..04912fc 100644 --- a/src/state.c +++ b/src/state.c @@ -325,6 +325,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));