[CONSOLE.CPL] Fix problems detected by code analysis.

colors.c(129): warning C6287: Redundant code: the left and right sub-expressions are identical.

colors.c(159): warning C6001: Using uninitialized memory 'colorIndex'.
colors.c(180): warning C6385: Reading invalid data from 'ConInfo->ColorTable': the readable size is '64' bytes, but '259696' bytes may be read.
(I thank ThFabba for the suggestion fix.)

console.c(313): warning C6387: 'ConInfo->hWnd' could be '0': this does not adhere to the specification for the function 'SendMessageW'.

font.c(60): warning C6387: 'Preview->hFont' could be '0': this does not adhere to the specification for the function 'GetFontCellSize'.
font.c(230): warning C6001: Using uninitialized memory 'szFontSize'.
font.c(230): warning C6054: String 'szFontSize' might not be zero-terminated.
font.c(671): warning C6387: 'hFont' could be '0': this does not adhere to the specification for the function 'GetFontCellSize'.

layout.c(502): warning C6387: 'FontPreview.hFont' could be '0': this does not adhere to the specification for the function 'SelectObject'.
This commit is contained in:
Hermès Bélusca-Maïto 2022-01-28 23:46:41 +01:00
parent 3b76aa5d19
commit 38f6fd9df7
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
4 changed files with 55 additions and 24 deletions

View file

@ -126,14 +126,16 @@ ColorsProc(HWND hDlg,
case WM_COMMAND:
{
/* NOTE: both BN_CLICKED and STN_CLICKED == 0 */
if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == STN_CLICKED)
if (HIWORD(wParam) == BN_CLICKED /* || HIWORD(wParam) == STN_CLICKED */)
{
if (LOWORD(wParam) == IDC_RADIO_SCREEN_TEXT ||
LOWORD(wParam) == IDC_RADIO_SCREEN_BACKGROUND ||
LOWORD(wParam) == IDC_RADIO_POPUP_TEXT ||
LOWORD(wParam) == IDC_RADIO_POPUP_BACKGROUND)
WORD ctrlIndex = LOWORD(wParam);
if (ctrlIndex == IDC_RADIO_SCREEN_TEXT ||
ctrlIndex == IDC_RADIO_SCREEN_BACKGROUND ||
ctrlIndex == IDC_RADIO_POPUP_TEXT ||
ctrlIndex == IDC_RADIO_POPUP_BACKGROUND)
{
switch (LOWORD(wParam))
switch (ctrlIndex)
{
case IDC_RADIO_SCREEN_TEXT:
/* Get the colour of the screen foreground */
@ -169,9 +171,9 @@ ColorsProc(HWND hDlg,
break;
}
else
if (IDC_STATIC_COLOR1 <= LOWORD(wParam) && LOWORD(wParam) <= IDC_STATIC_COLOR16)
if (IDC_STATIC_COLOR1 <= ctrlIndex && ctrlIndex <= IDC_STATIC_COLOR16)
{
colorIndex = LOWORD(wParam) - IDC_STATIC_COLOR1;
colorIndex = ctrlIndex - IDC_STATIC_COLOR1;
/* If the same static control was re-clicked, don't take it into account */
if (colorIndex == ActiveStaticControl)
@ -213,9 +215,11 @@ ColorsProc(HWND hDlg,
}
else if (HIWORD(wParam) == EN_KILLFOCUS)
{
if (LOWORD(wParam) == IDC_EDIT_COLOR_RED ||
LOWORD(wParam) == IDC_EDIT_COLOR_GREEN ||
LOWORD(wParam) == IDC_EDIT_COLOR_BLUE)
WORD ctrlIndex = LOWORD(wParam);
if (ctrlIndex == IDC_EDIT_COLOR_RED ||
ctrlIndex == IDC_EDIT_COLOR_GREEN ||
ctrlIndex == IDC_EDIT_COLOR_BLUE)
{
DWORD value;
@ -224,7 +228,7 @@ ColorsProc(HWND hDlg,
color = ConInfo->ColorTable[colorIndex];
/* Modify the colour component */
switch (LOWORD(wParam))
switch (ctrlIndex)
{
case IDC_EDIT_COLOR_RED:
value = GetDlgItemInt(hDlg, IDC_EDIT_COLOR_RED, NULL, FALSE);

View file

@ -112,7 +112,7 @@ ApplyConsoleInfo(HWND hwndDlg)
SetConsoleInfo = (res != IDCANCEL);
SaveConsoleInfo = (res == IDC_RADIO_APPLY_ALL);
if (SetConsoleInfo == FALSE)
if (!SetConsoleInfo)
{
/* Don't destroy when the user presses cancel */
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, PSNRET_INVALID_NOCHANGEPAGE);
@ -275,7 +275,7 @@ InitApplet(HANDLE hSectionOrWnd)
ResetFontPreview(&FontPreview);
ClearTTFontCache();
/* Save the console settings */
/* Apply the console settings if necessary */
if (SetConsoleInfo)
{
HANDLE hSection;
@ -303,19 +303,25 @@ InitApplet(HANDLE hSectionOrWnd)
goto Quit;
}
/* Copy the console information into the section */
/* Copy the console information into the section and unmap it */
RtlCopyMemory(pSharedInfo, ConInfo, ConInfo->cbSize);
/* Unmap it */
UnmapViewOfFile(pSharedInfo);
/* Signal to CONSRV that it can apply the new configuration */
/*
* Signal to CONSRV that it can apply the new settings.
*
* NOTE: SetConsoleInfo set to TRUE by ApplyConsoleInfo()
* *only* when ConInfo->hWnd != NULL and the user did not
* press IDCANCEL in the confirmation dialog.
*/
ASSERT(ConInfo->hWnd);
SendMessageW(ConInfo->hWnd, WM_SETCONSOLEINFO, (WPARAM)hSection, 0);
/* Close the section and return */
CloseHandle(hSection);
}
/* Save the console settings */
if (SaveConsoleInfo)
{
/* Default settings saved when ConInfo->hWnd == NULL */

View file

@ -53,11 +53,16 @@ RefreshFontPreview(
IN FONT_PREVIEW* Preview,
IN PCONSOLE_STATE_INFO pConInfo)
{
if (Preview->hFont) DeleteObject(Preview->hFont);
Preview->hFont = CreateConsoleFont(pConInfo);
if (Preview->hFont == NULL)
HFONT hFont = CreateConsoleFont(pConInfo);
if (!hFont)
{
DPRINT1("RefreshFontPreview: CreateConsoleFont() failed\n");
GetFontCellSize(NULL, Preview->hFont, &Preview->CharHeight, &Preview->CharWidth);
return;
}
if (Preview->hFont) DeleteObject(Preview->hFont);
Preview->hFont = hFont;
GetFontCellSize(NULL, hFont, &Preview->CharHeight, &Preview->CharWidth);
}
VOID
@ -223,8 +228,17 @@ FontSizeList_GetSelectedFontSize(
* See: https://support.microsoft.com/en-us/help/66365/how-to-process-a-cbn-selchange-notification-message
* for more details.
*/
INT Length;
nSel = (INT)SendMessageW(SizeList->hWndTTSizeList, CB_GETCURSEL, 0, 0);
SendMessageW(SizeList->hWndTTSizeList, CB_GETLBTEXT, nSel, (LPARAM)szFontSize);
if (nSel == CB_ERR) return 0;
Length = (INT)SendMessageW(SizeList->hWndTTSizeList, CB_GETLBTEXTLEN, nSel, 0);
ASSERT((Length != LB_ERR) && (Length < ARRAYSIZE(szFontSize)));
Length = (INT)SendMessageW(SizeList->hWndTTSizeList, CB_GETLBTEXT, nSel, (LPARAM)szFontSize);
ASSERT((Length != LB_ERR) && (Length < ARRAYSIZE(szFontSize)));
szFontSize[Length] = L'\0';
/* Validate the font size */
FontSize = wcstoul(szFontSize, &pszNext, 10);
@ -558,6 +572,7 @@ FontTypeChange(
if (FaceName == NULL) return FALSE;
Length = (INT)SendMessageW(hFontList, LB_GETTEXT, nSel, (LPARAM)FaceName);
ASSERT(Length != LB_ERR);
FaceName[Length] = L'\0';
StringCchCopyW(pConInfo->FaceName, ARRAYSIZE(pConInfo->FaceName), FaceName);
@ -664,8 +679,11 @@ FontSizeChange(
CharWidth = (UINT)(SizeList->UseRasterOrTTList ? LOWORD(FontSize) : 0);
hFont = CreateConsoleFont2((LONG)CharHeight, (LONG)CharWidth, pConInfo);
if (hFont == NULL)
if (!hFont)
{
DPRINT1("FontSizeChange: CreateConsoleFont2() failed\n");
return FALSE;
}
/* Retrieve the real character size in pixels */
GetFontCellSize(NULL, hFont, &CharHeight, &CharWidth);

View file

@ -497,6 +497,9 @@ PaintText(
/* Refresh the font preview, getting a new font if necessary */
if (FontPreview.hFont == NULL)
RefreshFontPreview(&FontPreview, pConInfo);
/* Recheck hFont since RefreshFontPreview() may not have updated it */
if (FontPreview.hFont == NULL)
return;
/* Draw the preview text using the current font */
hOldFont = SelectObject(drawItem->hDC, FontPreview.hFont);