X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fwin32ss%2Fprinting%2Fbase%2Fwinspool%2Fmain.c;h=5e798c351f737eb7e5ff787bfb7e1ef2e84f4035;hp=32c9fa2bfe08ffff6f62ec2cca0e16ff8d58ca14;hb=9a3f634ff7c6d6458a13963ebfeac2ba595031c3;hpb=b6a75bda5d8430e1e0ecdb92eebd5bee62d0e14a;ds=inline diff --git a/reactos/win32ss/printing/base/winspool/main.c b/reactos/win32ss/printing/base/winspool/main.c index 32c9fa2bfe0..5e798c351f7 100644 --- a/reactos/win32ss/printing/base/winspool/main.c +++ b/reactos/win32ss/printing/base/winspool/main.c @@ -165,7 +165,6 @@ BOOL WINAPI OpenPrinterA(LPSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSA pDefault) { BOOL ReturnValue = FALSE; - DEVMODEW wDevMode; PWSTR pwszPrinterName = NULL; PWSTR pwszDatatype = NULL; PRINTER_DEFAULTSW wDefault = { 0 }; @@ -207,22 +206,15 @@ OpenPrinterA(LPSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSA pDefaul } if (pDefault->pDevMode) - { - // Fixed size strings, so no additional memory needs to be allocated - MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pDefault->pDevMode->dmDeviceName, -1, wDevMode.dmDeviceName, sizeof(wDevMode.dmDeviceName) / sizeof(WCHAR)); - MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pDefault->pDevMode->dmFormName, -1, wDevMode.dmFormName, sizeof(wDevMode.dmFormName) / sizeof(WCHAR)); - - // Use CopyMemory to copy over several structure values in one step - CopyMemory(&wDevMode.dmSpecVersion, &pDefault->pDevMode->dmSpecVersion, (ULONG_PTR)&wDevMode.dmCollate - (ULONG_PTR)&wDevMode.dmSpecVersion + sizeof(wDevMode.dmCollate)); - CopyMemory(&wDevMode.dmLogPixels, &pDefault->pDevMode->dmLogPixels, (ULONG_PTR)&wDevMode.dmPanningHeight - (ULONG_PTR)&wDevMode.dmLogPixels + sizeof(wDevMode.dmPanningHeight)); - - wDefault.pDevMode = &wDevMode; - } + wDefault.pDevMode = GdiConvertToDevmodeW(pDefault->pDevMode); } ReturnValue = OpenPrinterW(pwszPrinterName, phPrinter, &wDefault); Cleanup: + if (wDefault.pDevMode) + HeapFree(GetProcessHeap(), 0, wDefault.pDevMode); + if (pwszPrinterName) HeapFree(GetProcessHeap(), 0, pwszPrinterName);