Another winspool HEAP_strdupAtoW
Duane Clark
dclark at akamail.com
Tue Feb 11 22:54:33 CST 2003
It looks like the recent commit to CVS:
http://cvs.winehq.com/patch.py?id=7225
combined these two patches:
http://www.winehq.com/hypermail/wine-patches/2003/02/0061.html
by Duane Clark
http://www.winehq.com/hypermail/wine-patches/2003/02/0071.html
by Stefan Becker
The first match had a mistake (an extra RtlCreateUnicodeStringFromAsciiz
was left in) and the later patch reintroduced a HEAP_strdupAtoW call. So
this patch takes care of those two items.
Printing now works fine (for me), though I just noticed a fixme that did
not previously appear.
fixme:commdlg:PRINTDLG_SetUpPrinterListComboA Can't find '(null)' in
printer list so trying to find default
Changelog:
Replace HEAP_strdupAtoW call and delete extra
RtlCreateUnicodeStringFromAsciiz.
-------------- next part --------------
Index: dlls/winspool/info.c
===================================================================
RCS file: /home/wine/wine/dlls/winspool/info.c,v
retrieving revision 1.71
diff -u -r1.71 info.c
--- dlls/winspool/info.c 12 Feb 2003 01:19:25 -0000 1.71
+++ dlls/winspool/info.c 12 Feb 2003 04:46:31 -0000
@@ -151,6 +151,11 @@
PRINTER_INFO_2A pinfo2a;
const char* def;
void *cupshandle = NULL;
+ const char *ppd;
+ char *port,*devline;
+ UNICODE_STRING lpszNameW;
+ PWSTR pwstrNameW;
+ HKEY hkeyPrinters, hkeyPrinter;
cupshandle = wine_dlopen(CUPS_SONAME, RTLD_NOW, NULL, 0);
if (!cupshandle)
@@ -172,27 +177,22 @@
nrofdests = pcupsGetPrinters(&printers);
for (i=0;i<nrofdests;i++) {
- const char *ppd;
- char *port,*devline;
- WCHAR *pNameW;
- HKEY hkeyPrinters, hkeyPrinter;
-
/* First check that the printer doesn't exist already */
- pNameW = HEAP_strdupAtoW(GetProcessHeap(), 0, printers[i]);
+ pwstrNameW = asciitounicode(&lpszNameW, printers[i]);
if (RegCreateKeyA(HKEY_LOCAL_MACHINE, Printers, &hkeyPrinters) ==
ERROR_SUCCESS) {
- if (RegOpenKeyW(hkeyPrinters, pNameW, &hkeyPrinter) ==
+ if (RegOpenKeyW(hkeyPrinters, pwstrNameW, &hkeyPrinter) ==
ERROR_SUCCESS) {
/* We know this printer already */
RegCloseKey(hkeyPrinter);
RegCloseKey(hkeyPrinters);
- HeapFree(GetProcessHeap(),0,pNameW);
+ RtlFreeUnicodeString(&lpszNameW);
TRACE("Printer %s already known. Skipping detection\n", printers[i]);
continue;
}
RegCloseKey(hkeyPrinters);
}
- HeapFree(GetProcessHeap(),0,pNameW);
+ RtlFreeUnicodeString(&lpszNameW);
/* OK, we haven't seen this one yet. Request PPD for it */
ppd = pcupsGetPPD(printers[i]);
@@ -2194,7 +2194,6 @@
UNICODE_STRING lpszNameW;
PWSTR pwstrNameW;
- RtlCreateUnicodeStringFromAsciiz(&lpszNameW,lpszName);
pwstrNameW = asciitounicode(&lpszNameW,lpszName);
ret = WINSPOOL_EnumPrinters(dwType, pwstrNameW, dwLevel, lpbPrinters, cbBuf,
lpdwNeeded, lpdwReturned, FALSE);
More information about the wine-patches
mailing list