Huw Davies : winspool: Add a helper to duplicate a devmode.

Alexandre Julliard julliard at winehq.org
Fri Mar 30 11:27:06 CDT 2012


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Fri Mar 30 14:39:40 2012 +0100

winspool: Add a helper to duplicate a devmode.

---

 dlls/winspool.drv/info.c |   20 +++++++++++---------
 1 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 9bb8915..7fbede2 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:




More information about the wine-cvs mailing list