Commit 811cdfaf authored by Alexandre Julliard's avatar Alexandre Julliard

gdi32: Reject invalid DIB depths in CreateDIBSection.

parent 21ced8dd
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment