gdi32: Add some tests for BITMAPINFOHEADER biSize checks.
This commit is contained in:
parent
b668c52802
commit
1871743543
|
@ -1700,6 +1700,97 @@ static void test_CreateBitmap(void)
|
||||||
DeleteObject(bm);
|
DeleteObject(bm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_bitmapinfoheadersize(void)
|
||||||
|
{
|
||||||
|
HBITMAP hdib;
|
||||||
|
BITMAPINFO bmi;
|
||||||
|
BITMAPCOREINFO bci;
|
||||||
|
HDC hdc = GetDC(0);
|
||||||
|
|
||||||
|
memset(&bmi, 0, sizeof(BITMAPINFO));
|
||||||
|
bmi.bmiHeader.biHeight = 100;
|
||||||
|
bmi.bmiHeader.biWidth = 512;
|
||||||
|
bmi.bmiHeader.biBitCount = 24;
|
||||||
|
bmi.bmiHeader.biPlanes = 1;
|
||||||
|
|
||||||
|
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER) - 1;
|
||||||
|
|
||||||
|
hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib == NULL, "CreateDIBSection succeeded\n");
|
||||||
|
|
||||||
|
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
|
||||||
|
DeleteObject(hdib);
|
||||||
|
|
||||||
|
bmi.bmiHeader.biSize++;
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
|
||||||
|
DeleteObject(hdib);
|
||||||
|
|
||||||
|
bmi.bmiHeader.biSize = sizeof(BITMAPINFO);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
|
||||||
|
DeleteObject(hdib);
|
||||||
|
|
||||||
|
bmi.bmiHeader.biSize++;
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
|
||||||
|
DeleteObject(hdib);
|
||||||
|
|
||||||
|
bmi.bmiHeader.biSize = sizeof(BITMAPV4HEADER);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
|
||||||
|
DeleteObject(hdib);
|
||||||
|
|
||||||
|
bmi.bmiHeader.biSize = sizeof(BITMAPV5HEADER);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
|
||||||
|
DeleteObject(hdib);
|
||||||
|
|
||||||
|
memset(&bci, 0, sizeof(BITMAPCOREINFO));
|
||||||
|
bci.bmciHeader.bcHeight = 100;
|
||||||
|
bci.bmciHeader.bcWidth = 512;
|
||||||
|
bci.bmciHeader.bcBitCount = 24;
|
||||||
|
bci.bmciHeader.bcPlanes = 1;
|
||||||
|
|
||||||
|
bci.bmciHeader.bcSize = sizeof(BITMAPCOREHEADER) - 1;
|
||||||
|
|
||||||
|
hdib = CreateDIBSection(hdc, (BITMAPINFO *)&bci, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib == NULL, "CreateDIBSection succeeded\n");
|
||||||
|
|
||||||
|
bci.bmciHeader.bcSize = sizeof(BITMAPCOREHEADER);
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hdib = CreateDIBSection(hdc, (BITMAPINFO *)&bci, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
|
||||||
|
DeleteObject(hdib);
|
||||||
|
|
||||||
|
bci.bmciHeader.bcSize++;
|
||||||
|
|
||||||
|
hdib = CreateDIBSection(hdc, (BITMAPINFO *)&bci, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib == NULL, "CreateDIBSection succeeded\n");
|
||||||
|
|
||||||
|
bci.bmciHeader.bcSize = sizeof(BITMAPCOREINFO);
|
||||||
|
|
||||||
|
hdib = CreateDIBSection(hdc, (BITMAPINFO *)&bci, 0, NULL, NULL, 0);
|
||||||
|
ok(hdib == NULL, "CreateDIBSection succeeded\n");
|
||||||
|
|
||||||
|
ReleaseDC(0, hdc);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(bitmap)
|
START_TEST(bitmap)
|
||||||
{
|
{
|
||||||
is_win9x = GetWindowLongPtrW(GetDesktopWindow(), GWLP_WNDPROC) == 0;
|
is_win9x = GetWindowLongPtrW(GetDesktopWindow(), GWLP_WNDPROC) == 0;
|
||||||
|
@ -1717,4 +1808,5 @@ START_TEST(bitmap)
|
||||||
test_GetDIBits();
|
test_GetDIBits();
|
||||||
test_select_object();
|
test_select_object();
|
||||||
test_CreateBitmap();
|
test_CreateBitmap();
|
||||||
|
test_bitmapinfoheadersize();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue