[PATCH] gdi32/tests: Reserve sufficient room for DIB data.
Jeff Smith
whydoubt at gmail.com
Fri Nov 22 00:39:15 CST 2019
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48054
Signed-off-by: Jeff Smith <whydoubt at gmail.com>
---
dlls/gdi32/tests/bitmap.c | 41 ++++++++++++++++++++++-----------------
1 file changed, 23 insertions(+), 18 deletions(-)
diff --git a/dlls/gdi32/tests/bitmap.c b/dlls/gdi32/tests/bitmap.c
index 8fe160546c..dea7c3d9db 100644
--- a/dlls/gdi32/tests/bitmap.c
+++ b/dlls/gdi32/tests/bitmap.c
@@ -910,10 +910,15 @@ static void test_dibsections(void)
ReleaseDC(0, hdc);
}
+#define DATA_WIDTH 2
+#define DATA_HEIGHT 2
+#define MAX_PLANES 64
+#define MAX_BPP 64
+
static void test_dib_formats(void)
{
BITMAPINFO *bi;
- char data[256];
+ char data[((DATA_WIDTH * MAX_BPP + 31) / 32) * 4 * DATA_HEIGHT * MAX_PLANES];
void *bits;
int planes, bpp, compr, format;
HBITMAP hdib, hbmp;
@@ -928,9 +933,9 @@ static void test_dib_formats(void)
memset( data, 0xaa, sizeof(data) );
- for (bpp = 0; bpp <= 64; bpp++)
+ for (bpp = 0; bpp <= MAX_BPP; bpp++)
{
- for (planes = 0; planes <= 64; planes++)
+ for (planes = 0; planes <= MAX_PLANES; planes++)
{
for (compr = 0; compr < 8; compr++)
{
@@ -949,8 +954,8 @@ static void test_dib_formats(void)
memset( bi, 0, sizeof(bi->bmiHeader) );
bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bi->bmiHeader.biWidth = 2;
- bi->bmiHeader.biHeight = 2;
+ bi->bmiHeader.biWidth = DATA_WIDTH;
+ bi->bmiHeader.biHeight = DATA_HEIGHT;
bi->bmiHeader.biPlanes = planes;
bi->bmiHeader.biBitCount = bpp;
bi->bmiHeader.biCompression = compr;
@@ -969,8 +974,8 @@ static void test_dib_formats(void)
if (!planes) expect_ok = FALSE;
memset( bi, 0, sizeof(bi->bmiHeader) );
bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bi->bmiHeader.biWidth = 2;
- bi->bmiHeader.biHeight = 2;
+ bi->bmiHeader.biWidth = DATA_WIDTH;
+ bi->bmiHeader.biHeight = DATA_HEIGHT;
bi->bmiHeader.biPlanes = planes;
bi->bmiHeader.biBitCount = bpp;
bi->bmiHeader.biCompression = compr;
@@ -1027,8 +1032,8 @@ static void test_dib_formats(void)
bpp, bi->bmiHeader.biBitCount );
bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bi->bmiHeader.biWidth = 2;
- bi->bmiHeader.biHeight = 2;
+ bi->bmiHeader.biWidth = DATA_WIDTH;
+ bi->bmiHeader.biHeight = DATA_HEIGHT;
bi->bmiHeader.biPlanes = planes;
bi->bmiHeader.biBitCount = bpp;
bi->bmiHeader.biCompression = compr;
@@ -1067,8 +1072,8 @@ static void test_dib_formats(void)
memset( bi, 0, sizeof(bi->bmiHeader) );
bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bi->bmiHeader.biWidth = 2;
- bi->bmiHeader.biHeight = 2;
+ bi->bmiHeader.biWidth = DATA_WIDTH;
+ bi->bmiHeader.biHeight = DATA_HEIGHT;
bi->bmiHeader.biPlanes = 1;
bi->bmiHeader.biBitCount = 16;
bi->bmiHeader.biCompression = BI_BITFIELDS;
@@ -1121,7 +1126,7 @@ static void test_dib_formats(void)
ok( ret, "SetDIBits failed with bad bitfields\n" );
bi->bmiHeader.biWidth = -2;
- bi->bmiHeader.biHeight = 2;
+ bi->bmiHeader.biHeight = DATA_HEIGHT;
bi->bmiHeader.biBitCount = 32;
bi->bmiHeader.biCompression = BI_RGB;
hdib = CreateDIBSection(hdc, bi, DIB_RGB_COLORS, &bits, NULL, 0);
@@ -1144,7 +1149,7 @@ static void test_dib_formats(void)
ok( !ret || broken(ret), /* nt4 */ "GetDIBits succeeded with negative width\n" );
bi->bmiHeader.biWidth = 0;
- bi->bmiHeader.biHeight = 2;
+ bi->bmiHeader.biHeight = DATA_HEIGHT;
bi->bmiHeader.biBitCount = 32;
bi->bmiHeader.biCompression = BI_RGB;
hdib = CreateDIBSection(hdc, bi, DIB_RGB_COLORS, &bits, NULL, 0);
@@ -1167,7 +1172,7 @@ static void test_dib_formats(void)
ret = GetDIBits(hdc, hbmp, 0, 2, NULL, bi, DIB_RGB_COLORS);
ok( !ret || broken(ret), /* nt4 */ "GetDIBits succeeded with zero width\n" );
- bi->bmiHeader.biWidth = 2;
+ bi->bmiHeader.biWidth = DATA_WIDTH;
bi->bmiHeader.biHeight = 0;
bi->bmiHeader.biBitCount = 32;
bi->bmiHeader.biCompression = BI_RGB;
@@ -1193,8 +1198,8 @@ static void test_dib_formats(void)
/* some functions accept DIB_PAL_COLORS+1, but not beyond */
- bi->bmiHeader.biWidth = 2;
- bi->bmiHeader.biHeight = 2;
+ bi->bmiHeader.biWidth = DATA_WIDTH;
+ bi->bmiHeader.biHeight = DATA_HEIGHT;
bi->bmiHeader.biBitCount = 1;
bi->bmiHeader.biCompression = BI_RGB;
hdib = CreateDIBSection(hdc, bi, DIB_PAL_COLORS+1, &bits, NULL, 0);
@@ -1217,8 +1222,8 @@ static void test_dib_formats(void)
ret = GetDIBits(hdc, hbmp, 0, 0, NULL, bi, DIB_PAL_COLORS+1);
ok( !ret, "GetDIBits succeeded with DIB_PAL_COLORS+1\n" );
- bi->bmiHeader.biWidth = 2;
- bi->bmiHeader.biHeight = 2;
+ bi->bmiHeader.biWidth = DATA_WIDTH;
+ bi->bmiHeader.biHeight = DATA_HEIGHT;
bi->bmiHeader.biBitCount = 1;
bi->bmiHeader.biCompression = BI_RGB;
hdib = CreateDIBSection(hdc, bi, DIB_PAL_COLORS+2, &bits, NULL, 0);
--
2.23.0
More information about the wine-devel
mailing list