Fix missing checks for platform mismatch
The native access functions for monitor objects did not check whether
the correct platform was initialized and would return invalid handles if
it was not.
diff --git a/src/cocoa_monitor.m b/src/cocoa_monitor.m
index 7808941..e351088 100644
--- a/src/cocoa_monitor.m
+++ b/src/cocoa_monitor.m
@@ -622,6 +622,13 @@
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(kCGNullDirectDisplay);
+
+ if (_glfw.platform.platformID != GLFW_PLATFORM_COCOA)
+ {
+ _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "Cocoa: Platform not initialized");
+ return kCGNullDirectDisplay;
+ }
+
return monitor->ns.displayID;
}
diff --git a/src/win32_monitor.c b/src/win32_monitor.c
index 13f7bfe..4edaf2c 100644
--- a/src/win32_monitor.c
+++ b/src/win32_monitor.c
@@ -535,6 +535,13 @@
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
+
+ if (_glfw.platform.platformID != GLFW_PLATFORM_WIN32)
+ {
+ _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "Win32: Platform not initialized");
+ return NULL;
+ }
+
return monitor->win32.publicAdapterName;
}
@@ -542,6 +549,13 @@
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
+
+ if (_glfw.platform.platformID != GLFW_PLATFORM_WIN32)
+ {
+ _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "Win32: Platform not initialized");
+ return NULL;
+ }
+
return monitor->win32.publicDisplayName;
}
diff --git a/src/wl_monitor.c b/src/wl_monitor.c
index df64f60..96527a4 100644
--- a/src/wl_monitor.c
+++ b/src/wl_monitor.c
@@ -259,6 +259,13 @@
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
+
+ if (_glfw.platform.platformID != GLFW_PLATFORM_WAYLAND)
+ {
+ _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "Wayland: Platform not initialized");
+ return NULL;
+ }
+
return monitor->wl.output;
}
diff --git a/src/x11_monitor.c b/src/x11_monitor.c
index ae62664..31640fb 100644
--- a/src/x11_monitor.c
+++ b/src/x11_monitor.c
@@ -604,6 +604,13 @@
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(None);
+
+ if (_glfw.platform.platformID != GLFW_PLATFORM_X11)
+ {
+ _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "X11: Platform not initialized");
+ return None;
+ }
+
return monitor->x11.crtc;
}
@@ -611,6 +618,13 @@
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(None);
+
+ if (_glfw.platform.platformID != GLFW_PLATFORM_X11)
+ {
+ _glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "X11: Platform not initialized");
+ return None;
+ }
+
return monitor->x11.output;
}