Dmitry Timoshkov : gdi32: Make the bitmap test pass under Windows 2000.

Alexandre Julliard julliard at winehq.org
Tue Apr 29 08:54:37 CDT 2008


Module: wine
Branch: master
Commit: 80c1508bf1ed6fdbf450868230a8bb10cb1a537d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=80c1508bf1ed6fdbf450868230a8bb10cb1a537d

Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date:   Tue Apr 29 14:49:45 2008 +0900

gdi32: Make the bitmap test pass under Windows 2000.

---

 dlls/gdi32/tests/bitmap.c |   33 +++++++++++++++++++--------------
 1 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/dlls/gdi32/tests/bitmap.c b/dlls/gdi32/tests/bitmap.c
index 00441c0..27a6c88 100644
--- a/dlls/gdi32/tests/bitmap.c
+++ b/dlls/gdi32/tests/bitmap.c
@@ -276,7 +276,7 @@ static void test_dib_info(HBITMAP hbm, const void *bits, const BITMAPINFOHEADER
 {
     BITMAP bm;
     DIBSECTION ds;
-    INT ret, width_bytes;
+    INT ret, bm_width_bytes, dib_width_bytes;
     BYTE *buf;
 
     ret = GetObject(hbm, sizeof(bm), &bm);
@@ -285,23 +285,25 @@ static void test_dib_info(HBITMAP hbm, const void *bits, const BITMAPINFOHEADER
     ok(bm.bmType == 0, "wrong bm.bmType %d\n", bm.bmType);
     ok(bm.bmWidth == bmih->biWidth, "wrong bm.bmWidth %d\n", bm.bmWidth);
     ok(bm.bmHeight == bmih->biHeight, "wrong bm.bmHeight %d\n", bm.bmHeight);
-    width_bytes = DIB_GetWidthBytes(bm.bmWidth, bm.bmBitsPixel);
-    ok(bm.bmWidthBytes == width_bytes, "wrong bm.bmWidthBytes %d != %d\n", bm.bmWidthBytes, width_bytes);
+    dib_width_bytes = DIB_GetWidthBytes(bm.bmWidth, bm.bmBitsPixel);
+    bm_width_bytes = BITMAP_GetWidthBytes(bm.bmWidth, bm.bmBitsPixel);
+    if (bm.bmWidthBytes != dib_width_bytes) /* Win2k bug */
+        ok(bm.bmWidthBytes == bm_width_bytes, "wrong bm.bmWidthBytes %d != %d\n", bm.bmWidthBytes, bm_width_bytes);
+    else
+        ok(bm.bmWidthBytes == dib_width_bytes, "wrong bm.bmWidthBytes %d != %d\n", bm.bmWidthBytes, dib_width_bytes);
     ok(bm.bmPlanes == bmih->biPlanes, "wrong bm.bmPlanes %d\n", bm.bmPlanes);
     ok(bm.bmBitsPixel == bmih->biBitCount, "bm.bmBitsPixel %d != %d\n", bm.bmBitsPixel, bmih->biBitCount);
     ok(bm.bmBits == bits, "wrong bm.bmBits %p != %p\n", bm.bmBits, bits);
 
     buf = HeapAlloc(GetProcessHeap(), 0, bm.bmWidthBytes * bm.bmHeight + 4096);
 
-    width_bytes = BITMAP_GetWidthBytes(bm.bmWidth, bm.bmBitsPixel);
-
     /* GetBitmapBits returns not 32-bit aligned data */
     ret = GetBitmapBits(hbm, 0, NULL);
-    ok(ret == width_bytes * bm.bmHeight, "%d != %d\n", ret, width_bytes * bm.bmHeight);
+    ok(ret == bm_width_bytes * bm.bmHeight, "%d != %d\n", ret, bm_width_bytes * bm.bmHeight);
 
     memset(buf, 0xAA, bm.bmWidthBytes * bm.bmHeight + 4096);
     ret = GetBitmapBits(hbm, bm.bmWidthBytes * bm.bmHeight + 4096, buf);
-    ok(ret == width_bytes * bm.bmHeight, "%d != %d\n", ret, width_bytes * bm.bmHeight);
+    ok(ret == bm_width_bytes * bm.bmHeight, "%d != %d\n", ret, bm_width_bytes * bm.bmHeight);
 
     HeapFree(GetProcessHeap(), 0, buf);
 
@@ -331,8 +333,9 @@ static void test_dib_info(HBITMAP hbm, const void *bits, const BITMAPINFOHEADER
     ok(ret == sizeof(ds), "wrong size %d\n", ret);
 
     ok(ds.dsBm.bmBits == bits, "wrong bm.bmBits %p != %p\n", ds.dsBm.bmBits, bits);
-    ok(ds.dsBmih.biSizeImage == ds.dsBm.bmWidthBytes * ds.dsBm.bmHeight, "%u != %u\n",
-       ds.dsBmih.biSizeImage, ds.dsBm.bmWidthBytes * ds.dsBm.bmHeight);
+    if (ds.dsBm.bmWidthBytes != bm_width_bytes) /* Win2k bug */
+        ok(ds.dsBmih.biSizeImage == ds.dsBm.bmWidthBytes * ds.dsBm.bmHeight, "%u != %u\n",
+           ds.dsBmih.biSizeImage, ds.dsBm.bmWidthBytes * ds.dsBm.bmHeight);
     ok(bmih->biSizeImage == 0, "%u != 0\n", bmih->biSizeImage);
     ds.dsBmih.biSizeImage = 0;
 
@@ -969,11 +972,6 @@ static void test_bitmap(void)
 
     SetLastError(0xdeadbeef);
     hbmp = CreateBitmap(0x7ffffff, 1, 1, 1, NULL);
-    ok(hbmp != 0, "CreateBitmap should not fail\n");
-    DeleteObject(hbmp);
-
-    SetLastError(0xdeadbeef);
-    hbmp = CreateBitmap(0x7ffffff, 9, 1, 1, NULL);
     if (!hbmp)
     {
         ok(GetLastError() == ERROR_NOT_ENOUGH_MEMORY,
@@ -983,6 +981,13 @@ static void test_bitmap(void)
         DeleteObject(hbmp);
 
     SetLastError(0xdeadbeef);
+    hbmp = CreateBitmap(0x7ffffff, 9, 1, 1, NULL);
+    ok(!hbmp, "CreateBitmap should fail\n");
+    ok(GetLastError() == ERROR_NOT_ENOUGH_MEMORY /* XP */ ||
+       GetLastError() == ERROR_INVALID_PARAMETER /* Win2k */,
+       "expected ERROR_NOT_ENOUGH_MEMORY, got %u\n", GetLastError());
+
+    SetLastError(0xdeadbeef);
     hbmp = CreateBitmap(0x7ffffff + 1, 1, 1, 1, NULL);
     ok(!hbmp, "CreateBitmap should fail\n");
     ok(GetLastError() == ERROR_INVALID_PARAMETER,




More information about the wine-cvs mailing list