Fixed divide by zero if the application has run out of GDI handles and is trying to show an error dialog

This commit is contained in:
Sam Lantinga 2015-09-14 11:15:25 -07:00
parent 4295a6fe47
commit 08ce12c4e3
1 changed files with 6 additions and 3 deletions

View File

@ -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. */ /* Font size - convert to logical font size for dialog parameter. */
{ {
HDC ScreenDC = GetDC(0); HDC ScreenDC = GetDC(NULL);
WordToPass = (WORD)(-72 * NCM.lfMessageFont.lfHeight / GetDeviceCaps(ScreenDC, LOGPIXELSY)); int LogicalPixelsY = GetDeviceCaps(ScreenDC, LOGPIXELSY);
ReleaseDC(0, ScreenDC); 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)) { if (!AddDialogData(dialog, &WordToPass, 2)) {