From a37ee1e2e9fd3bce298134da58b6ff945629d383 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Wed, 4 Apr 2012 15:03:30 +0100 Subject: [PATCH] wineps: Fix a memory leak. --- dlls/wineps.drv/driver.c | 20 ++++++++++++-------- dlls/wineps.drv/psdrv.h | 5 ----- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/dlls/wineps.drv/driver.c b/dlls/wineps.drv/driver.c index 5ad3b6a7247..50fb59fe2b9 100644 --- a/dlls/wineps.drv/driver.c +++ b/dlls/wineps.drv/driver.c @@ -179,6 +179,12 @@ void PSDRV_MergeDevmodes(PSDRV_DEVMODEA *dm1, PSDRV_DEVMODEA *dm2, } +typedef struct +{ + PRINTERINFO *pi; + PSDRV_DEVMODEA *dlgdm; +} PSDRV_DLGINFO; + /**************************************************************** * PSDRV_PaperDlgProc * @@ -360,8 +366,8 @@ INT PSDRV_ExtDeviceMode(LPSTR lpszDriver, HWND hwnd, LPDEVMODEA lpdmOutput, HPROPSHEETPAGE hpsp[1]; PROPSHEETPAGEW psp; PROPSHEETHEADERW psh; - PSDRV_DLGINFO *di; - PSDRV_DEVMODEA *dlgdm; + PSDRV_DLGINFO di; + PSDRV_DEVMODEA dlgdm; static const WCHAR PAPERW[] = {'P','A','P','E','R','\0'}; static const WCHAR SetupW[] = {'S','e','t','u','p','\0'}; @@ -372,17 +378,15 @@ INT PSDRV_ExtDeviceMode(LPSTR lpszDriver, HWND hwnd, LPDEVMODEA lpdmOutput, "CreatePropertySheetPageW"); pPropertySheet = (void*)GetProcAddress(hinstComctl32, "PropertySheetW"); memset(&psp,0,sizeof(psp)); - dlgdm = HeapAlloc( PSDRV_Heap, 0, sizeof(*dlgdm) ); - *dlgdm = *pi->Devmode; - di = HeapAlloc( PSDRV_Heap, 0, sizeof(*di) ); - di->pi = pi; - di->dlgdm = dlgdm; + dlgdm = *pi->Devmode; + di.pi = pi; + di.dlgdm = &dlgdm; psp.dwSize = sizeof(psp); psp.hInstance = PSDRV_hInstance; psp.u.pszTemplate = PAPERW; psp.u2.pszIcon = NULL; psp.pfnDlgProc = PSDRV_PaperDlgProc; - psp.lParam = (LPARAM)di; + psp.lParam = (LPARAM)&di; hpsp[0] = pCreatePropertySheetPage(&psp); memset(&psh, 0, sizeof(psh)); diff --git a/dlls/wineps.drv/psdrv.h b/dlls/wineps.drv/psdrv.h index 093a543b250..53186c7f3d7 100644 --- a/dlls/wineps.drv/psdrv.h +++ b/dlls/wineps.drv/psdrv.h @@ -385,11 +385,6 @@ typedef struct int pathdepth; } PSDRV_PDEVICE; -typedef struct { - PRINTERINFO *pi; - PSDRV_DEVMODEA *dlgdm; -} PSDRV_DLGINFO; - static inline PSDRV_PDEVICE *get_psdrv_dev( PHYSDEV dev ) { return (PSDRV_PDEVICE *)dev; -- 2.11.4.GIT