[1/3] gdi32: Fix error code for GetMetaFileBitsEx with test

Nikolay Sivov bunglehead at gmail.com
Sat Jan 10 13:44:09 CST 2009


Changelog:
    - fix error code for GetMetaFileBitsEx with test passed on WinXP

>From a805601b82d360d7ba8daa9da6fdc241afed39e4 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Sat, 10 Jan 2009 21:47:27 +0300
Subject:  Fix error code for GetMetaFileBitsEx with test

---
 dlls/gdi32/metafile.c       |    5 ++++-
 dlls/gdi32/tests/metafile.c |   11 +++++++++++
 2 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/dlls/gdi32/metafile.c b/dlls/gdi32/metafile.c
index 83ea2aa..5cabb9a 100644
--- a/dlls/gdi32/metafile.c
+++ b/dlls/gdi32/metafile.c
@@ -1136,7 +1136,10 @@ UINT WINAPI GetMetaFileBitsEx( HMETAFILE hmf, UINT nSize, LPVOID buf )
     UINT mfSize;
 
     TRACE("(%p,%d,%p)\n", hmf, nSize, buf);
-    if (!mh) return 0;  /* FIXME: error code */
+    if (!mh) {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return 0;
+    }
     if(mh->mtType == METAFILE_DISK)
         FIXME("Disk-based metafile?\n");
     mfSize = mh->mtSize * 2;
diff --git a/dlls/gdi32/tests/metafile.c b/dlls/gdi32/tests/metafile.c
index b0c6f24..d5db52b 100644
--- a/dlls/gdi32/tests/metafile.c
+++ b/dlls/gdi32/tests/metafile.c
@@ -2124,6 +2124,16 @@ static void test_SetEnhMetaFileBits(void)
     DeleteEnhMetaFile(hemf);
 }
 
+static void test_GetMetaFileBits(void)
+{
+    UINT ret;
+
+    SetLastError(0xdeadbeef);
+    ret = GetMetaFileBitsEx(NULL, 0, NULL);
+    ok(ret == 0, "Expected 0, got %u\n", ret);
+    ok(GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %u\n", GetLastError());
+}
+
 START_TEST(metafile)
 {
     init_function_pointers();
@@ -2148,4 +2158,5 @@ START_TEST(metafile)
 
     test_gdiis();
     test_SetEnhMetaFileBits();
+    test_GetMetaFileBits();
 }
-- 
1.5.6.5







More information about the wine-patches mailing list