From a20d9dedf3755c5c221b1fa332ffcc3730c35cef Mon Sep 17 00:00:00 2001 From: sleeptightAnsiC <91839286+sleeptightAnsiC@users.noreply.github.com> Date: Sat, 1 Mar 2025 23:42:07 +0100 Subject: [PATCH] [desktop_glfw] fix InitPlatform crash caused by glfwCreateWindow... (#4804) ...returning NULL. This was causing a crash few lines later. Refs: https://github.com/raysan5/raylib/issues/4801#issuecomment-2691201072 Partially-fixes: https://github.com/raysan5/raylib/issues/4801 --- src/platforms/rcore_desktop_glfw.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 90b725ddb..f79276549 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -1521,6 +1521,12 @@ int InitPlatform(void) SetupFramebuffer(CORE.Window.display.width, CORE.Window.display.height); platform.handle = glfwCreateWindow(CORE.Window.display.width, CORE.Window.display.height, (CORE.Window.title != 0)? CORE.Window.title : " ", monitor, NULL); + if (!platform.handle) + { + glfwTerminate(); + TRACELOG(LOG_WARNING, "GLFW: Failed to initialize Window"); + return -1; + } // NOTE: Full-screen change, not working properly... //glfwSetWindowMonitor(platform.handle, glfwGetPrimaryMonitor(), 0, 0, CORE.Window.screen.width, CORE.Window.screen.height, GLFW_DONT_CARE); @@ -1535,6 +1541,12 @@ int InitPlatform(void) int creationHeight = CORE.Window.screen.height != 0 ? CORE.Window.screen.height : 1; platform.handle = glfwCreateWindow(creationWidth, creationHeight, (CORE.Window.title != 0)? CORE.Window.title : " ", NULL, NULL); + if (!platform.handle) + { + glfwTerminate(); + TRACELOG(LOG_WARNING, "GLFW: Failed to initialize Window"); + return -1; + } // After the window was created, determine the monitor that the window manager assigned. // Derive display sizes, and, if possible, window size in case it was zero at beginning. @@ -1558,18 +1570,8 @@ int InitPlatform(void) return -1; } - if (platform.handle) - { - CORE.Window.render.width = CORE.Window.screen.width; - CORE.Window.render.height = CORE.Window.screen.height; - } - } - - if (!platform.handle) - { - glfwTerminate(); - TRACELOG(LOG_WARNING, "GLFW: Failed to initialize Window"); - return -1; + CORE.Window.render.width = CORE.Window.screen.width; + CORE.Window.render.height = CORE.Window.screen.height; } glfwMakeContextCurrent(platform.handle);