winspool/tests: Don't crash when AddJob/GetJob fails (win8)

André Hentschel nerv at dawncrow.de
Tue Sep 25 16:10:09 CDT 2012


---
 dlls/winspool.drv/tests/info.c |   63 ++++++++++++++++++++++-----------------
 1 files changed, 35 insertions(+), 28 deletions(-)

diff --git a/dlls/winspool.drv/tests/info.c b/dlls/winspool.drv/tests/info.c
index 6d051d6..4baccea 100644
--- a/dlls/winspool.drv/tests/info.c
+++ b/dlls/winspool.drv/tests/info.c
@@ -2926,21 +2926,24 @@ static void test_OpenPrinter_defaults(void)
     add_job = HeapAlloc( GetProcessHeap(), 0, needed );
     ret = AddJob( printer, 1, (BYTE *)add_job, needed, &needed );
     ok( ret, "got %d\n", ret );
+    if (ret)
+    {
+        ret = GetJob( printer, add_job->JobId, 2, NULL, 0, &needed );
+        ok( !ret, "got %d\n", ret );
+        job_info = HeapAlloc( GetProcessHeap(), 0, needed );
+        ret = GetJob( printer, add_job->JobId, 2, (BYTE *)job_info, needed, &needed );
+        ok( ret, "got %d\n", ret );
+        if (ret)
+        {
+            todo_wine ok( job_info->pDevMode != NULL, "got NULL devmode\n");
+            if (job_info->pDevMode)
+                ok( job_info->pDevMode->u1.s1.dmPaperSize == default_size, "got %d default %d\n",
+                    job_info->pDevMode->u1.s1.dmPaperSize, default_size );
+        }
+        HeapFree( GetProcessHeap(), 0, job_info );
+        ScheduleJob( printer, add_job->JobId ); /* remove the empty job */
+    }
 
-    ret = GetJob( printer, add_job->JobId, 2, NULL, 0, &needed );
-    ok( !ret, "got %d\n", ret );
-    job_info = HeapAlloc( GetProcessHeap(), 0, needed );
-    ret = GetJob( printer, add_job->JobId, 2, (BYTE *)job_info, needed, &needed );
-    ok( ret, "got %d\n", ret );
-
-todo_wine
-    ok( job_info->pDevMode != NULL, "got NULL devmode\n");
-    if (job_info->pDevMode)
-        ok( job_info->pDevMode->u1.s1.dmPaperSize == default_size, "got %d default %d\n",
-            job_info->pDevMode->u1.s1.dmPaperSize, default_size );
-
-    HeapFree( GetProcessHeap(), 0, job_info );
-    ScheduleJob( printer, add_job->JobId ); /* remove the empty job */
     HeapFree( GetProcessHeap(), 0, add_job );
     ClosePrinter( printer );
 
@@ -2975,21 +2978,25 @@ todo_wine
     add_job = HeapAlloc( GetProcessHeap(), 0, needed );
     ret = AddJob( printer, 1, (BYTE *)add_job, needed, &needed );
     ok( ret, "got %d\n", ret );
+    if (ret)
+    {
+        ret = GetJob( printer, add_job->JobId, 2, NULL, 0, &needed );
+        ok( !ret, "got %d\n", ret );
+        job_info = HeapAlloc( GetProcessHeap(), 0, needed );
+        ret = GetJob( printer, add_job->JobId, 2, (BYTE *)job_info, needed, &needed );
+        ok( ret, "got %d\n", ret );
+        if (ret)
+        {
+            ok( job_info->pDevMode->dmFields == DM_PAPERSIZE, "got %08x\n",
+                job_info->pDevMode->dmFields );
+            ok( job_info->pDevMode->u1.s1.dmPaperSize == my_dm.u1.s1.dmPaperSize,
+                "got %d new size %d\n",
+                job_info->pDevMode->u1.s1.dmPaperSize, my_dm.u1.s1.dmPaperSize );
+        }
+        HeapFree( GetProcessHeap(), 0, job_info );
+        ScheduleJob( printer, add_job->JobId ); /* remove the empty job */
+    }
 
-    ret = GetJob( printer, add_job->JobId, 2, NULL, 0, &needed );
-    ok( !ret, "got %d\n", ret );
-    job_info = HeapAlloc( GetProcessHeap(), 0, needed );
-    ret = GetJob( printer, add_job->JobId, 2, (BYTE *)job_info, needed, &needed );
-    ok( ret, "got %d\n", ret );
-
-    ok( job_info->pDevMode->dmFields == DM_PAPERSIZE, "got %08x\n",
-        job_info->pDevMode->dmFields );
-    ok( job_info->pDevMode->u1.s1.dmPaperSize == my_dm.u1.s1.dmPaperSize,
-        "got %d new size %d\n",
-        job_info->pDevMode->u1.s1.dmPaperSize, my_dm.u1.s1.dmPaperSize );
-
-    HeapFree( GetProcessHeap(), 0, job_info );
-    ScheduleJob( printer, add_job->JobId ); /* remove the empty job */
     HeapFree( GetProcessHeap(), 0, add_job );
     ClosePrinter( printer );
 }
-- 
1.7.4.1



-- 

Best Regards, André Hentschel


More information about the wine-patches mailing list