From 08ce12c4e3fe5b0269402c549c42b6262d84854c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 14 Sep 2015 11:15:25 -0700 Subject: [PATCH] Fixed divide by zero if the application has run out of GDI handles and is trying to show an error dialog --- src/video/windows/SDL_windowsmessagebox.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/video/windows/SDL_windowsmessagebox.c b/src/video/windows/SDL_windowsmessagebox.c index 31ffb8fc3..ac4a3a5a5 100644 --- a/src/video/windows/SDL_windowsmessagebox.c +++ b/src/video/windows/SDL_windowsmessagebox.c @@ -297,9 +297,12 @@ static WIN_DialogData *CreateDialogData(int w, int h, const char *caption) /* Font size - convert to logical font size for dialog parameter. */ { - HDC ScreenDC = GetDC(0); - WordToPass = (WORD)(-72 * NCM.lfMessageFont.lfHeight / GetDeviceCaps(ScreenDC, LOGPIXELSY)); - ReleaseDC(0, ScreenDC); + HDC ScreenDC = GetDC(NULL); + int LogicalPixelsY = GetDeviceCaps(ScreenDC, LOGPIXELSY); + if (!LogicalPixelsY) /* This can happen if the application runs out of GDI handles */ + LogicalPixelsY = 72; + WordToPass = (WORD)(-72 * NCM.lfMessageFont.lfHeight / LogicalPixelsY); + ReleaseDC(NULL, ScreenDC); } if (!AddDialogData(dialog, &WordToPass, 2)) {