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