Vincent Povirk : gdiplus: Test writes with conversion and without a user buffer.

Alexandre Julliard julliard at winehq.org
Fri Feb 25 11:19:44 CST 2011


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

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Thu Feb 24 16:04:04 2011 -0600

gdiplus: Test writes with conversion and without a user buffer.

---

 dlls/gdiplus/tests/image.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c
index fb2ec28..dde040a 100644
--- a/dlls/gdiplus/tests/image.c
+++ b/dlls/gdiplus/tests/image.c
@@ -517,6 +517,7 @@ static void test_LockBits(void)
     BitmapData bd;
     const INT WIDTH = 10, HEIGHT = 20;
     ARGB color;
+    int y;
 
     bm = NULL;
     stat = GdipCreateBitmapFromScan0(WIDTH, HEIGHT, 0, PixelFormat24bppRGB, NULL, &bm);
@@ -645,6 +646,7 @@ static void test_LockBits(void)
 
     if (stat == Ok) {
         expect(0xff, ((BYTE*)bd.Scan0)[2]);
+        ((BYTE*)bd.Scan0)[1] = 0x88;
         if (0)
             /* Areas outside the rectangle appear to be uninitialized */
             ok(0xc3 != ((BYTE*)bd.Scan0)[2 + bd.Stride * 5], "original image bits are readable\n");
@@ -653,6 +655,10 @@ static void test_LockBits(void)
         expect(Ok, stat);
     }
 
+    stat = GdipBitmapGetPixel(bm, 2, 3, &color);
+    expect(Ok, stat);
+    todo_wine expect(0xffff8800, color);
+
     /* write, conversion */
     stat = GdipBitmapLockBits(bm, &rect, ImageLockModeWrite, PixelFormat32bppARGB, &bd);
     expect(Ok, stat);
@@ -665,10 +671,22 @@ static void test_LockBits(void)
             ok(0xc3 != ((BYTE*)bd.Scan0)[2 + bd.Stride * 5], "original image bits are readable\n");
         }
 
+        /* Initialize the buffer so the unlock doesn't access undefined memory */
+        for (y=0; y<5; y++)
+            memset(((BYTE*)bd.Scan0) + bd.Stride * y, 0, 12);
+
+        ((BYTE*)bd.Scan0)[0] = 0x12;
+        ((BYTE*)bd.Scan0)[1] = 0x34;
+        ((BYTE*)bd.Scan0)[2] = 0x56;
+
         stat = GdipBitmapUnlockBits(bm, &bd);
         expect(Ok, stat);
     }
 
+    stat = GdipBitmapGetPixel(bm, 2, 3, &color);
+    expect(Ok, stat);
+    expect(0xff563412, color);
+
     stat = GdipDisposeImage((GpImage*)bm);
     expect(Ok, stat);
     stat = GdipCreateBitmapFromScan0(WIDTH, HEIGHT, 0, PixelFormat24bppRGB, NULL, &bm);




More information about the wine-cvs mailing list