comdlg32: Fix regression since the full Path was returned in pDriverPath

Detlef Riekenberg wine.dev at web.de
Fri Aug 10 04:18:19 CDT 2007


comdlg32 did not handle the full Path in pDriverPath

Changelog:
comdlg32: Fix regression since the full Path is returned in pDriverPath


Depends on my other Patches for comdlg32 

-- 
 
By by ... Detlef

-------------- next part --------------
>From 403ff2f53147b687aee96137ad4967d7c77835a5 Mon Sep 17 00:00:00 2001
From: Detlef Riekenberg <wine.dev at web.de>
Date: Fri, 10 Aug 2007 11:13:03 +0200
Subject: [PATCH] comdlg32: Fix regression since the full Path is returned in pDriverPath
---
 dlls/comdlg32/printdlg.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/dlls/comdlg32/printdlg.c b/dlls/comdlg32/printdlg.c
index 2bd5650..41e4d02 100644
--- a/dlls/comdlg32/printdlg.c
+++ b/dlls/comdlg32/printdlg.c
@@ -36,6 +36,7 @@ #include "winspool.h"
 #include "winerror.h"
 
 #include "wine/debug.h"
+#include "wine/unicode.h"
 
 #include "commdlg.h"
 #include "dlgs.h"
@@ -195,7 +196,8 @@ static BOOL PRINTDLG_CreateDevNames(HGLO
     char buf[260];
     DWORD dwBufLen = sizeof(buf);
 
-    size = strlen(DeviceDriverName) + 1
+    /* DeviceDriverName is a full Path */
+    size = strlen(strrchr(DeviceDriverName, '\\') +1) + 1
             + strlen(DeviceName) + 1
             + strlen(OutputPort) + 1
             + sizeof(DEVNAMES);
@@ -211,10 +213,10 @@ static BOOL PRINTDLG_CreateDevNames(HGLO
     lpDevNames = (LPDEVNAMES) pDevNamesSpace;
 
     pTempPtr = pDevNamesSpace + sizeof(DEVNAMES);
-    strcpy(pTempPtr, DeviceDriverName);
+    strcpy(pTempPtr, strrchr(DeviceDriverName, '\\') +1);
     lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace;
 
-    pTempPtr += strlen(DeviceDriverName) + 1;
+    pTempPtr += lstrlenA(pTempPtr) + 1;
     strcpy(pTempPtr, DeviceName);
     lpDevNames->wDeviceOffset = pTempPtr - pDevNamesSpace;
 
@@ -238,7 +240,8 @@ static BOOL PRINTDLG_CreateDevNamesW(HGL
     WCHAR bufW[260];
     DWORD dwBufLen = sizeof(bufW) / sizeof(WCHAR);
 
-    size = sizeof(WCHAR)*lstrlenW(DeviceDriverName) + 2
+    /* DeviceDriverName is a full Path */
+    size = sizeof(WCHAR)*lstrlenW(strrchrW(DeviceDriverName, '\\') +1) + 2
             + sizeof(WCHAR)*lstrlenW(DeviceName) + 2
             + sizeof(WCHAR)*lstrlenW(OutputPort) + 2
             + sizeof(DEVNAMES);
@@ -254,10 +257,10 @@ static BOOL PRINTDLG_CreateDevNamesW(HGL
     lpDevNames = (LPDEVNAMES) pDevNamesSpace;
 
     pTempPtr = (LPWSTR)((LPDEVNAMES)pDevNamesSpace + 1);
-    lstrcpyW(pTempPtr, DeviceDriverName);
+    lstrcpyW(pTempPtr, strrchrW(DeviceDriverName, '\\') +1);
     lpDevNames->wDriverOffset = pTempPtr - pDevNamesSpace;
 
-    pTempPtr += lstrlenW(DeviceDriverName) + 1;
+    pTempPtr += lstrlenW(pTempPtr) + 1;
     lstrcpyW(pTempPtr, DeviceName);
     lpDevNames->wDeviceOffset = pTempPtr - pDevNamesSpace;
 
-- 
1.4.1



More information about the wine-patches mailing list