diff --git a/Firmware/sdk/apps/gameboy/src/gameboy_app.cpp b/Firmware/sdk/apps/gameboy/src/gameboy_app.cpp index 82ef70d..bbb09d8 100644 --- a/Firmware/sdk/apps/gameboy/src/gameboy_app.cpp +++ b/Firmware/sdk/apps/gameboy/src/gameboy_app.cpp @@ -1798,13 +1798,16 @@ public: if (!file) return false; - struct gb_s restored{}; - const size_t read = std::fread(&restored, 1, sizeof(restored), file); - std::fclose(file); - if (read != sizeof(restored)) - return false; + std::vector backup(sizeof(gb)); + std::memcpy(backup.data(), &gb, sizeof(gb)); + + const size_t read = std::fread(&gb, 1, sizeof(gb), file); + std::fclose(file); + if (read != sizeof(gb)) { + std::memcpy(&gb, backup.data(), sizeof(gb)); + return false; + } - gb = restored; applyRuntimeBindings(); gb.direct.joypad = 0xFF; frameDirty = true;