From b215a989f5f6b7af5fdb86d83547a989debc0dfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Camilla=20L=C3=B6wy?= Date: Sun, 19 Mar 2017 22:21:46 +0100 Subject: [PATCH] Win32: Check for monitor object creation failure --- src/win32_monitor.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/win32_monitor.c b/src/win32_monitor.c index d91a02f8..06e0e0cf 100644 --- a/src/win32_monitor.c +++ b/src/win32_monitor.c @@ -94,6 +94,7 @@ void _glfwPollMonitorsWin32(void) _GLFWmonitor** disconnected = NULL; DWORD adapterIndex, displayIndex; DISPLAY_DEVICEW adapter, display; + _GLFWmonitor* monitor; disconnectedCount = _glfw.monitorCount; if (disconnectedCount) @@ -145,8 +146,14 @@ void _glfwPollMonitorsWin32(void) if (i < disconnectedCount) continue; - _glfwInputMonitor(createMonitor(&adapter, &display), - GLFW_CONNECTED, type); + monitor = createMonitor(&adapter, &display); + if (!monitor) + { + free(disconnected); + return; + } + + _glfwInputMonitor(monitor, GLFW_CONNECTED, type); type = _GLFW_INSERT_LAST; } @@ -169,8 +176,14 @@ void _glfwPollMonitorsWin32(void) if (i < disconnectedCount) continue; - _glfwInputMonitor(createMonitor(&adapter, NULL), - GLFW_CONNECTED, type); + monitor = createMonitor(&adapter, NULL); + if (!monitor) + { + free(disconnected); + return; + } + + _glfwInputMonitor(monitor, GLFW_CONNECTED, type); } }