https://git.reactos.org/?p=reactos.git;a=commitdiff;h=13b34253694811739064d…
commit 13b34253694811739064de9efa6be2881b138c19
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Sat Jan 29 02:20:26 2022 +0100
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Sun Jan 30 01:02:07 2022 +0100
[CONSOLE.CPL] Use fallback brushes for text preview in case CreateSolidBrush() fails
(e.g. low memory scenario).
---
dll/cpl/console/colors.c | 6 ++----
dll/cpl/console/layout.c | 19 ++++++++-----------
2 files changed, 10 insertions(+), 15 deletions(-)
diff --git a/dll/cpl/console/colors.c b/dll/cpl/console/colors.c
index b4d1c337e01..f6a8c40e947 100644
--- a/dll/cpl/console/colors.c
+++ b/dll/cpl/console/colors.c
@@ -26,10 +26,8 @@ PaintStaticControls(
ARRAYSIZE(pConInfo->ColorTable) - 1);
hBrush = CreateSolidBrush(pConInfo->ColorTable[index]);
- if (!hBrush) return;
-
- FillRect(drawItem->hDC, &drawItem->rcItem, hBrush);
- DeleteObject(hBrush);
+ FillRect(drawItem->hDC, &drawItem->rcItem, hBrush ? hBrush :
GetStockObject(BLACK_BRUSH));
+ if (hBrush) DeleteObject(hBrush);
if (ActiveStaticControl == index)
DrawFocusRect(drawItem->hDC, &drawItem->rcItem);
diff --git a/dll/cpl/console/layout.c b/dll/cpl/console/layout.c
index a94bcb53241..8430b3de218 100644
--- a/dll/cpl/console/layout.c
+++ b/dll/cpl/console/layout.c
@@ -390,8 +390,8 @@ WinPrev_OnDraw(
/* Draw the console background */
hBrush =
CreateSolidBrush(pConInfo->ColorTable[BkgdAttribFromAttrib(pConInfo->ScreenAttributes)]);
- FillRect(hDC, &rcWin, hBrush);
- DeleteObject(hBrush);
+ FillRect(hDC, &rcWin, hBrush ? hBrush : GetStockObject(BLACK_BRUSH));
+ if (hBrush) DeleteObject(hBrush);
}
static LRESULT CALLBACK
@@ -489,20 +489,18 @@ PaintText(
nbkColor = pConInfo->ColorTable[BkgdAttribFromAttrib(CurrentAttrib)];
ntColor = pConInfo->ColorTable[TextAttribFromAttrib(CurrentAttrib)];
+ /* Draw the console background */
hBrush = CreateSolidBrush(nbkColor);
- if (!hBrush) return;
+ FillRect(drawItem->hDC, &drawItem->rcItem, hBrush ? hBrush :
GetStockObject(BLACK_BRUSH));
+ if (hBrush) DeleteObject(hBrush);
+ /* Refresh the font preview, getting a new font if necessary */
if (FontPreview.hFont == NULL)
RefreshFontPreview(&FontPreview, pConInfo);
+ /* Draw the preview text using the current font */
hOldFont = SelectObject(drawItem->hDC, FontPreview.hFont);
- //if (hOldFont == NULL)
- //{
- // DeleteObject(hBrush);
- // return;
- //}
-
- FillRect(drawItem->hDC, &drawItem->rcItem, hBrush);
+ // if (!hOldFont) return;
/* Add a few space between the preview window border and the text sample */
InflateRect(&drawItem->rcItem, -2, -2);
@@ -514,7 +512,6 @@ PaintText(
SetBkColor(drawItem->hDC, pbkColor);
SelectObject(drawItem->hDC, hOldFont);
- DeleteObject(hBrush);
}