From b70e08592163f94220c3f48cad344ba96d374f87 Mon Sep 17 00:00:00 2001 From: StapleButter Date: Tue, 19 Sep 2017 21:06:15 +0200 Subject: [PATCH] fix possible crashes upon exit --- src/libui_sdl/libui/windows/alloc.cpp | 1 + src/libui_sdl/main.cpp | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/libui_sdl/libui/windows/alloc.cpp b/src/libui_sdl/libui/windows/alloc.cpp index eeee3ad4..cf6bd2ed 100644 --- a/src/libui_sdl/libui/windows/alloc.cpp +++ b/src/libui_sdl/libui/windows/alloc.cpp @@ -22,6 +22,7 @@ void uninitAlloc(void) // note the void * cast; otherwise it'll be treated as a string oss << (void *) (alloc.first) << " " << types[alloc.second] << "\n"; ossstr = oss.str(); + printf("data leak: %s\n", ossstr.c_str()); userbug("Some data was leaked; either you left a uiControl lying around or there's a bug in libui itself. Leaked data:\n%s", ossstr.c_str()); } diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp index b9520456..b40c9d1d 100644 --- a/src/libui_sdl/main.cpp +++ b/src/libui_sdl/main.cpp @@ -96,6 +96,8 @@ int EmuThreadFunc(void* burp) u32 nlines = NDS::RunFrame(); //SDL_UnlockMutex(ScreenMutex); + if (EmuRunning == 0) break; + uiAreaQueueRedrawAll(MainDrawArea); // framerate limiter based off SDL2_gfx @@ -266,6 +268,9 @@ void OnOpenFile(uiMenuItem* item, uiWindow* window, void* blarg) if (!file) return; NDS::LoadROM(file, Config::DirectBoot); + uiFreeText(file); + // TODO: change libui to store strings in stack-allocated buffers? + // so we don't have to free it after use EmuRunning = 1; }