From fe6be2131e31e84eb94e1aa764a7396891ddd808 Mon Sep 17 00:00:00 2001 From: Vasilis Date: Fri, 15 May 2026 11:27:01 +0200 Subject: [PATCH] fix GetCurrentMonitor() distance calc overflow --- src/platforms/rcore_desktop_glfw.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 191a3130e..58164d36e 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -883,7 +883,14 @@ int GetCurrentMonitor(void) int dx = wcx - xclosest; int dy = wcy - yclosest; - int dist = (dx*dx) + (dy*dy); + + // Use unsigned int to avoid signed integer overflow UB. + // Note: (-x)^2 == x^2 (mod 2^32), so sign of dx/dy does not matter + unsigned int ux = (unsigned int)dx; + unsigned int uy = (unsigned int)dy; + unsigned int udist = ux*ux + uy*uy; + int dist = (int)udist; + if (dist < closestDist) { index = i;