[PATCH] commdlg: Fix PrintDlg parameter checks
Detlef Riekenberg
wine.dev at web.de
Sun Jan 10 13:51:21 CST 2010
Validated with the win16 tests
--
By by ... Detlef
---
dlls/commdlg.dll16/printdlg.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/dlls/commdlg.dll16/printdlg.c b/dlls/commdlg.dll16/printdlg.c
index 64bb395..74fc5e7 100644
--- a/dlls/commdlg.dll16/printdlg.c
+++ b/dlls/commdlg.dll16/printdlg.c
@@ -107,6 +107,13 @@ BOOL16 WINAPI PrintDlg16( LPPRINTDLG16 lppd )
PRINTDLGA pd32;
BOOL ret;
+ if (!lppd)
+ {
+ /* CommDlgExtendedError is managed only in comdlg32
+ Generate failure with CDERR_INITIALIZATION */
+ return PrintDlgA(NULL);
+ }
+
pd32.lStructSize = sizeof(pd32);
pd32.Flags = lppd->Flags & ~(PD_ENABLEPRINTTEMPLATE | PD_ENABLEPRINTTEMPLATEHANDLE |
PD_ENABLESETUPTEMPLATE | PD_ENABLESETUPTEMPLATEHANDLE |
@@ -128,6 +135,9 @@ BOOL16 WINAPI PrintDlg16( LPPRINTDLG16 lppd )
if (lppd->Flags & PD_ENABLESETUPHOOK)
FIXME( "custom setup hook %p no longer supported\n", lppd->lpfnSetupHook );
+ /* Generate failure with CDERR_STRUCTSIZE, when needed */
+ if (lppd->lStructSize != sizeof(PRINTDLG16)) pd32.lStructSize--;
+
if ((ret = PrintDlgA( &pd32 )))
{
lppd->hDC = HDC_16( pd32.hDC );
--
1.6.5
More information about the wine-patches
mailing list