--- fceux-2.2.2.orig/src/input.cpp 2013-06-15 15:44:11.000000000 -0400 +++ fceux-2.2.2/src/input.cpp 2014-12-31 01:32:46.302001912 -0500 @@ -1161,7 +1161,7 @@ // FIXME this will always evaluate to true, should this be // if (*lastSavestateMade...) to check if it holds a string or just // a '\0'? - if (lastSavestateMade && (undoSS || redoSS)) + if (*lastSavestateMade && (undoSS || redoSS)) SwapSaveState(); } --- fceux-2.2.2.orig/src/state.cpp 2013-09-18 19:03:59.000000000 -0400 +++ fceux-2.2.2/src/state.cpp 2014-12-31 01:33:11.453155054 -0500 @@ -1048,7 +1048,7 @@ //Both files must exist //-------------------------------------------------------------------------------------------- - if (!lastSavestateMade) + if (!*lastSavestateMade) { FCEUI_DispMessage("Can't Undo",0); FCEUI_printf("Undo savestate was attempted but unsuccessful because there was not a recently used savestate.\n"); @@ -1153,7 +1153,7 @@ void RedoLoadState() { if (!redoLS) return; - if (lastLoadstateMade && redoLS) + if (*lastLoadstateMade && redoLS) { FCEUSS_Load(lastLoadstateMade); FCEUI_printf("Redoing %s\n",lastLoadstateMade);