From: Timo Kreuzer Date: Wed, 9 Jun 2010 20:36:04 +0000 (+0000) Subject: [WIN32K] X-Git-Tag: backups/reactos-yarotows@57446~85 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=a8ac489720550a5cc31dc2dcdc296129114be3d0 [WIN32K] - Improve readability in SetBMIColor - Only when BitCount is <= 8, calculate the number of colors in the table - Fixes a crash with VBox driver svn path=/branches/reactos-yarotows/; revision=47724 --- diff --git a/subsystems/win32/win32k/objects/dibobj.c b/subsystems/win32/win32k/objects/dibobj.c index 212e6d66b14..8b6cf8e86d6 100644 --- a/subsystems/win32/win32k/objects/dibobj.c +++ b/subsystems/win32/win32k/objects/dibobj.c @@ -1746,13 +1746,16 @@ FORCEINLINE VOID SetBMIColor(CONST BITMAPINFO* pbmi, DWORD* color, INT i) { + PVOID pvColors = ((PBYTE)pbmi + pbmi->bmiHeader.biSize); if(pbmi->bmiHeader.biSize == sizeof(BITMAPCOREHEADER)) { - *(RGBTRIPLE*)((PBYTE)pbmi + pbmi->bmiHeader.biSize + i*sizeof(RGBTRIPLE)) = *(RGBTRIPLE*)color; + RGBTRIPLE *pColor = pvColors; + pColor[i] = *(RGBTRIPLE*)color; } else { - *(RGBQUAD*)((PBYTE)pbmi + pbmi->bmiHeader.biSize + i*sizeof(RGBQUAD)) = *(RGBQUAD*)color; + RGBQUAD *pColor = pvColors; + pColor[i] = *(RGBQUAD*)color; } } @@ -1954,7 +1957,7 @@ GetBMIFromBitmapV5Info(IN PBITMAPV5INFO pbmiSrc, ULONG cColorsUsed; cColorsUsed = pbmiSrc->bmiHeader.bV5ClrUsed; - if (cColorsUsed == 0) + if (cColorsUsed == 0 && pbmiSrc->bmiHeader.bV5BitCount <= 8) cColorsUsed = (1 << pbmiSrc->bmiHeader.bV5BitCount); if(dwColorUse == DIB_PAL_COLORS)