gdi32: Reject invalid DIB depths in CreateDIBSection.
This commit is contained in:
parent
21ced8ddc8
commit
811cdfaf27
|
@ -1261,11 +1261,10 @@ HBITMAP WINAPI CreateDIBSection(HDC hdc, CONST BITMAPINFO *bmi, UINT usage,
|
|||
case 8:
|
||||
case 24:
|
||||
if (compression == BI_RGB) break;
|
||||
/* fall through */
|
||||
default:
|
||||
WARN( "invalid %u bpp compression %u\n", bpp, compression );
|
||||
return 0;
|
||||
default:
|
||||
FIXME( "should fail %u bpp compression %u\n", bpp, compression );
|
||||
break;
|
||||
}
|
||||
|
||||
if (!(dib = HeapAlloc( GetProcessHeap(), 0, sizeof(*dib) ))) return 0;
|
||||
|
|
|
@ -554,7 +554,7 @@ static void test_dibsections(void)
|
|||
if (i == 1 || i == 4 || i == 8 || i == 16 || i == 24 || i == 32)
|
||||
ok(hdib != NULL, "CreateDIBSection bpp %u\n", i);
|
||||
else
|
||||
todo_wine ok(hdib == NULL, "CreateDIBSection bpp %u succeeded\n", i);
|
||||
ok(hdib == NULL, "CreateDIBSection bpp %u succeeded\n", i);
|
||||
if (hdib) DeleteObject( hdib );
|
||||
}
|
||||
|
||||
|
|
|
@ -2346,34 +2346,43 @@ static void test_GdipGetNearestColor(void)
|
|||
GdipDisposeImage((GpImage*)bitmap);
|
||||
|
||||
status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat48bppRGB, NULL, &bitmap);
|
||||
expect(Ok, status);
|
||||
status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics);
|
||||
expect(Ok, status);
|
||||
status = GdipGetNearestColor(graphics, &color);
|
||||
expect(Ok, status);
|
||||
expect(0xdeadbeef, color);
|
||||
GdipDeleteGraphics(graphics);
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
todo_wine expect(Ok, status);
|
||||
if (status == Ok)
|
||||
{
|
||||
status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics);
|
||||
expect(Ok, status);
|
||||
status = GdipGetNearestColor(graphics, &color);
|
||||
expect(Ok, status);
|
||||
expect(0xdeadbeef, color);
|
||||
GdipDeleteGraphics(graphics);
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
}
|
||||
|
||||
status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat64bppARGB, NULL, &bitmap);
|
||||
expect(Ok, status);
|
||||
status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics);
|
||||
expect(Ok, status);
|
||||
status = GdipGetNearestColor(graphics, &color);
|
||||
expect(Ok, status);
|
||||
expect(0xdeadbeef, color);
|
||||
GdipDeleteGraphics(graphics);
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
todo_wine expect(Ok, status);
|
||||
if (status == Ok)
|
||||
{
|
||||
status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics);
|
||||
expect(Ok, status);
|
||||
status = GdipGetNearestColor(graphics, &color);
|
||||
expect(Ok, status);
|
||||
expect(0xdeadbeef, color);
|
||||
GdipDeleteGraphics(graphics);
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
}
|
||||
|
||||
status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat64bppPARGB, NULL, &bitmap);
|
||||
expect(Ok, status);
|
||||
status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics);
|
||||
expect(Ok, status);
|
||||
status = GdipGetNearestColor(graphics, &color);
|
||||
expect(Ok, status);
|
||||
expect(0xdeadbeef, color);
|
||||
GdipDeleteGraphics(graphics);
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
todo_wine expect(Ok, status);
|
||||
if (status == Ok)
|
||||
{
|
||||
status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics);
|
||||
expect(Ok, status);
|
||||
status = GdipGetNearestColor(graphics, &color);
|
||||
expect(Ok, status);
|
||||
expect(0xdeadbeef, color);
|
||||
GdipDeleteGraphics(graphics);
|
||||
GdipDisposeImage((GpImage*)bitmap);
|
||||
}
|
||||
|
||||
status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat16bppRGB565, NULL, &bitmap);
|
||||
expect(Ok, status);
|
||||
|
|
Loading…
Reference in New Issue