From 2f78666a010a25f77f614affb875289581dbb877 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Fri, 30 Mar 2012 14:39:40 +0100 Subject: [PATCH] winspool: Add a helper to duplicate a devmode. --- dlls/winspool.drv/info.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c index 9bb89158514..7fbede27905 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -338,6 +338,16 @@ static LPSTR strdupWtoA( LPCWSTR str ) return ret; } +static DEVMODEW *dup_devmode( const DEVMODEW *dm ) +{ + DEVMODEW *ret; + + if (!dm) return NULL; + ret = HeapAlloc( GetProcessHeap(), 0, dm->dmSize + dm->dmDriverExtra ); + if (ret) memcpy( ret, dm, dm->dmSize + dm->dmDriverExtra ); + return ret; +} + /****************************************************************** * verify, that the filename is a local file * @@ -2888,7 +2898,6 @@ BOOL WINAPI SetJobW(HANDLE hPrinter, DWORD JobId, DWORD Level, { BOOL ret = FALSE; job_t *job; - DWORD size; TRACE("(%p, %d, %d, %p, %d)\n", hPrinter, JobId, Level, pJob, Command); FIXME("Ignoring everything other than document title\n"); @@ -2915,14 +2924,7 @@ BOOL WINAPI SetJobW(HANDLE hPrinter, DWORD JobId, DWORD Level, HeapFree(GetProcessHeap(), 0, job->document_title); job->document_title = strdupW(info2->pDocument); HeapFree(GetProcessHeap(), 0, job->devmode); - if (info2->pDevMode) - { - size = info2->pDevMode->dmSize + info2->pDevMode->dmDriverExtra; - job->devmode = HeapAlloc(GetProcessHeap(), 0, size); - memcpy(job->devmode, info2->pDevMode, size); - } - else - job->devmode = NULL; + job->devmode = dup_devmode( info2->pDevMode ); break; } case 3: -- 2.11.4.GIT