https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2410bcb133e3651da775a…
commit 2410bcb133e3651da775a699850efc84d4be2835
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Wed Oct 24 19:58:03 2018 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Wed Oct 24 19:58:03 2018 +0900
[FONT][WIN32SS] Improve readability of IntGdiGetFontResourceInfo (#945)
Make it human friendly code.
---
win32ss/gdi/ntgdi/freetype.c | 59 ++++++++++++++++++++++----------------------
1 file changed, 29 insertions(+), 30 deletions(-)
diff --git a/win32ss/gdi/ntgdi/freetype.c b/win32ss/gdi/ntgdi/freetype.c
index 10fb8655d7..aca18ccd6c 100644
--- a/win32ss/gdi/ntgdi/freetype.c
+++ b/win32ss/gdi/ntgdi/freetype.c
@@ -5063,7 +5063,7 @@ IntGdiGetFontResourceInfo(
DWORD dwType)
{
UNICODE_STRING EntryFileName;
- POBJECT_NAME_INFORMATION NameInfo1, NameInfo2;
+ POBJECT_NAME_INFORMATION NameInfo1 = NULL, NameInfo2 = NULL;
PLIST_ENTRY ListEntry;
PFONT_ENTRY FontEntry;
ULONG Size, i, Count;
@@ -5071,47 +5071,46 @@ IntGdiGetFontResourceInfo(
BOOL IsEqual;
FONTFAMILYINFO *FamInfo;
const ULONG MaxFamInfo = 64;
+ const ULONG MAX_FAM_INFO_BYTES = sizeof(FONTFAMILYINFO) * MaxFamInfo;
BOOL bSuccess;
+ const ULONG NAMEINFO_SIZE = sizeof(OBJECT_NAME_INFORMATION) + MAX_PATH *
sizeof(WCHAR);
DPRINT("IntGdiGetFontResourceInfo: dwType == %lu\n", dwType);
- /* Create buffer for full path name */
- Size = sizeof(OBJECT_NAME_INFORMATION) + MAX_PATH * sizeof(WCHAR);
- NameInfo1 = ExAllocatePoolWithTag(PagedPool, Size, TAG_FINF);
- if (!NameInfo1)
+ do
{
- EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
- return FALSE;
- }
+ /* Create buffer for full path name */
+ NameInfo1 = ExAllocatePoolWithTag(PagedPool, NAMEINFO_SIZE, TAG_FINF);
+ if (!NameInfo1)
+ break;
- /* Get the full path name */
- if (!IntGetFullFileName(NameInfo1, Size, FileName))
- {
- ExFreePoolWithTag(NameInfo1, TAG_FINF);
- return FALSE;
- }
+ /* Get the full path name */
+ if (!IntGetFullFileName(NameInfo1, NAMEINFO_SIZE, FileName))
+ break;
- /* Create a buffer for the entries' names */
- NameInfo2 = ExAllocatePoolWithTag(PagedPool, Size, TAG_FINF);
- if (!NameInfo2)
- {
- ExFreePoolWithTag(NameInfo1, TAG_FINF);
- EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
- return FALSE;
- }
+ /* Create a buffer for the entries' names */
+ NameInfo2 = ExAllocatePoolWithTag(PagedPool, NAMEINFO_SIZE, TAG_FINF);
+ if (!NameInfo2)
+ break;
- FamInfo = ExAllocatePoolWithTag(PagedPool,
- sizeof(FONTFAMILYINFO) * MaxFamInfo,
- TAG_FINF);
- if (!FamInfo)
+ FamInfo = ExAllocatePoolWithTag(PagedPool, MAX_FAM_INFO_BYTES, TAG_FINF);
+ } while (0);
+
+ if (!NameInfo1 || !NameInfo2 || !FamInfo)
{
- ExFreePoolWithTag(NameInfo2, TAG_FINF);
- ExFreePoolWithTag(NameInfo1, TAG_FINF);
+ if (NameInfo2)
+ ExFreePoolWithTag(NameInfo2, TAG_FINF);
+
+ if (NameInfo1)
+ ExFreePoolWithTag(NameInfo1, TAG_FINF);
+
EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
return FALSE;
}
- /* Try to find the pathname in the global font list */
+
Count = 0;
+
+ /* Try to find the pathname in the global font list */
IntLockGlobalFonts();
for (ListEntry = g_FontListHead.Flink; ListEntry != &g_FontListHead;
ListEntry = ListEntry->Flink)
@@ -5121,7 +5120,7 @@ IntGdiGetFontResourceInfo(
continue;
RtlInitUnicodeString(&EntryFileName , FontEntry->Font->Filename);
- if (!IntGetFullFileName(NameInfo2, Size, &EntryFileName))
+ if (!IntGetFullFileName(NameInfo2, NAMEINFO_SIZE, &EntryFileName))
continue;
if (!RtlEqualUnicodeString(&NameInfo1->Name, &NameInfo2->Name,
FALSE))