diff --git a/src/core_controller.c b/src/core_controller.c index 048ee21..3d34f65 100644 --- a/src/core_controller.c +++ b/src/core_controller.c @@ -35,7 +35,6 @@ msCoreControllerLoadGame (const unsigned char *rom, size_t rom_len, if (!core) { ms_last_error = "This rom does not appear to be a GBA or GB/C one"; file_rom->close(file_rom); - file_state->close(file_rom); goto loadGameReturn; } core->init(core); diff --git a/src/packet/hello.c b/src/packet/hello.c index e9fb912..0178fe2 100644 --- a/src/packet/hello.c +++ b/src/packet/hello.c @@ -101,6 +101,9 @@ msPacketHelloHandle(const struct msPacket *packet, struct msPacketHello *hello, } printf("Loading game and save for client_fd %d\n", data->clientFd); data->coreController = msCoreControllerLoadGame(hello->rom, hello->sizeRom, hello->savestate, hello->sizeSavestate, data); + if (!data->coreController) { + goto return_ms_packet_hello_handle; + } msCoreControllerSetFrameCallback(data->coreController, &msThreadCallbackSetFrame); msCoreControllerSetStartCallback(data->coreController, &msThreadCallbackStart); msCoreControllerThreadStart(data->coreController);