From 63cc11fc79d2ac4ab00a485f83827f00a0eb71ba Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Mon, 5 May 2008 08:28:41 +0000 Subject: [PATCH] - Revert 33274, except the change in GetDisplayNumberFromDeviceName(), where a zero-length string should be actually accepted. - As for other changes in 33274: removed accidentally committed DPRINT1s by Magnus, removed unneeded DisplayNumber zero-init, because it's always initialized by a call to GetDisplayNumberFromDeviceName(). svn path=/trunk/; revision=33290 --- reactos/subsystems/win32/win32k/objects/dc.c | 49 +++----------------- 1 file changed, 6 insertions(+), 43 deletions(-) diff --git a/reactos/subsystems/win32/win32k/objects/dc.c b/reactos/subsystems/win32/win32k/objects/dc.c index b0bec444313..20f95349c8d 100644 --- a/reactos/subsystems/win32/win32k/objects/dc.c +++ b/reactos/subsystems/win32/win32k/objects/dc.c @@ -2741,17 +2741,10 @@ GetDisplayNumberFromDeviceName( if (DisplayNumber == NULL) return STATUS_INVALID_PARAMETER_2; - DPRINT1("GetDisplayNumberFromDeviceName Pass 1 seh \n"); - - if ((pDeviceName != NULL) && (pDeviceName->Length != 0)) - { - if (pDeviceName->Length <= DisplayString.Length) - { - DPRINT1("GetDisplayNumberFromDeviceName FAIL pDeviceName : %wZ \n",pDeviceName); - DPRINT1("GetDisplayNumberFromDeviceName FAIL pDeviceName->Length : %d \n",pDeviceName->Length); - return STATUS_OBJECT_NAME_INVALID; - } - } + /* Check if DeviceName is valid */ + if (pDeviceName && + pDeviceName->Length > 0 && pDeviceName->Length <= DisplayString.Length) + return STATUS_OBJECT_NAME_INVALID; if (pDeviceName == NULL || pDeviceName->Length == 0) { @@ -2790,7 +2783,7 @@ GetDisplayNumberFromDeviceName( Number = Number * 10 + Char - L'0'; else if (Char != L'\0') return STATUS_OBJECT_NAME_INVALID; - } + } *DisplayNumber = Number - 1; } @@ -2816,7 +2809,7 @@ IntEnumDisplaySettings( static UNICODE_STRING CachedDeviceName; PDEVMODEW CachedMode = NULL; DEVMODEW DevMode; - ULONG DisplayNumber = 0; + ULONG DisplayNumber; if (!NT_SUCCESS(GetDisplayNumberFromDeviceName(pDeviceName, &DisplayNumber))) { @@ -2824,8 +2817,6 @@ IntEnumDisplaySettings( return FALSE; } - DPRINT1("IntEnumDisplaySettings Pass 1 seh \n"); - DPRINT("DevMode->dmSize = %d\n", pDevMode->dmSize); DPRINT("DevMode->dmExtraSize = %d\n", pDevMode->dmDriverExtra); if (pDevMode->dmSize != SIZEOF_DEVMODEW_300 && @@ -2836,17 +2827,13 @@ IntEnumDisplaySettings( return FALSE; } - DPRINT1("IntEnumDisplaySettings Pass 2 seh \n"); - if (iModeNum == ENUM_CURRENT_SETTINGS) { - DPRINT1("IntEnumDisplaySettings ENUM_CURRENT_SETTINGS \n"); CachedMode = &PrimarySurface.DMW; ASSERT(CachedMode->dmSize > 0); } else if (iModeNum == ENUM_REGISTRY_SETTINGS) { - DPRINT1("IntEnumDisplaySettings ENUM_REGISTRY_SETTINGS \n"); RtlZeroMemory(&DevMode, sizeof (DevMode)); DevMode.dmSize = sizeof (DevMode); DevMode.dmDriverExtra = 0; @@ -2860,13 +2847,9 @@ IntEnumDisplaySettings( /* FIXME: Maybe look for the matching devmode supplied by the * driver so we can provide driver private/extra data? */ - - DPRINT1("IntEnumDisplaySettings Pass 3 seh \n"); } else { - DPRINT1("IntEnumDisplaySettings NO FLAGs \n"); - BOOL IsCachedDevice = (CachedDevModes != NULL); if (CachedDevModes && @@ -2883,8 +2866,6 @@ IntEnumDisplaySettings( LPWSTR CurrentName; DRVENABLEDATA DrvEnableData; - DPRINT1("IntEnumDisplaySettings iModeNum \n"); - /* Free resources from last driver cache */ if (IsCachedDevice == FALSE && CachedDeviceName.Buffer != NULL) { @@ -2899,16 +2880,12 @@ IntEnumDisplaySettings( return FALSE; } - DPRINT1("IntEnumDisplaySettings Pass 4 seh \n"); - if (!IntPrepareDriverIfNeeded()) { DPRINT1("IntPrepareDriverIfNeeded failed\n"); return FALSE; } - DPRINT1("IntEnumDisplaySettings Pass 5 seh \n"); - /* * DriverFileNames may be a list of drivers in REG_SZ_MULTI format, * scan all of them until a good one found. @@ -2989,9 +2966,6 @@ IntEnumDisplaySettings( SetLastWin32Error(STATUS_NO_MEMORY); return FALSE; } - - DPRINT1("IntEnumDisplaySettings Pass 6 seh \n"); - if (CachedDevModes != NULL) { RtlCopyMemory(NewBuffer, CachedDevModes, SizeUsed); @@ -3030,19 +3004,12 @@ IntEnumDisplaySettings( } /* return cached info */ - - - DPRINT1("IntEnumDisplaySettings return cached info \n"); - CachedMode = CachedDevModes; if (CachedMode >= CachedDevModesEnd) { SetLastWin32Error(STATUS_NO_MORE_ENTRIES); return FALSE; } - - DPRINT1("IntEnumDisplaySettings Pass 7 seh \n"); - while (iModeNum-- > 0 && CachedMode < CachedDevModesEnd) { assert(CachedMode->dmSize > 0); @@ -3053,14 +3020,10 @@ IntEnumDisplaySettings( SetLastWin32Error(STATUS_NO_MORE_ENTRIES); return FALSE; } - - DPRINT1("IntEnumDisplaySettings Pass 8 seh \n"); } ASSERT(CachedMode != NULL); - DPRINT1("IntEnumDisplaySettings Pass 9 seh \n"); - RtlCopyMemory(pDevMode, CachedMode, min(pDevMode->dmSize, CachedMode->dmSize)); RtlZeroMemory(pDevMode + pDevMode->dmSize, pDevMode->dmDriverExtra); RtlCopyMemory(pDevMode + min(pDevMode->dmSize, CachedMode->dmSize), CachedMode + CachedMode->dmSize, min(pDevMode->dmDriverExtra, CachedMode->dmDriverExtra));