comdlg32: Only attempt to update the layout if the dialog window exists.
David Hedberg
david.hedberg at gmail.com
Sun Mar 29 15:56:29 CDT 2015
Fixes valgrind bugs #28754, #36190. Also removes the unused return value.
---
dlls/comdlg32/itemdlg.c | 29 ++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git a/dlls/comdlg32/itemdlg.c b/dlls/comdlg32/itemdlg.c
index c37b66e..fc2bdfb 100644
--- a/dlls/comdlg32/itemdlg.c
+++ b/dlls/comdlg32/itemdlg.c
@@ -1225,7 +1225,7 @@ static HRESULT init_custom_controls(FileDialogImpl *This)
/**************************************************************************
* Window related functions.
*/
-static SIZE update_layout(FileDialogImpl *This)
+static void update_layout(FileDialogImpl *This)
{
HDWP hdwp;
HWND hwnd;
@@ -1233,21 +1233,25 @@ static SIZE update_layout(FileDialogImpl *This)
RECT cancel_rc, open_rc;
RECT filetype_rc, filename_rc, filenamelabel_rc;
RECT toolbar_rc, ebrowser_rc, customctrls_rc;
- int missing_width, missing_height;
static const UINT vspacing = 4, hspacing = 4;
- SIZE ret;
+ static const UINT min_width = 320, min_height = 200;
- GetClientRect(This->dlg_hwnd, &dialog_rc);
+ if(This->dlg_hwnd == NULL)
+ {
+ TRACE("No dialog window, not updating layout\n");
+ return;
+ }
- missing_width = max(0, 320 - dialog_rc.right);
- missing_height = max(0, 200 - dialog_rc.bottom);
+ if(!GetClientRect(This->dlg_hwnd, &dialog_rc))
+ {
+ ERR("Failed to get client rect from dialog (%p)\n", This->dlg_hwnd);
+ return;
+ }
- if(missing_width || missing_height)
+ if(dialog_rc.right < min_width || dialog_rc.bottom < min_height)
{
- TRACE("Missing (%d, %d)\n", missing_width, missing_height);
- ret.cx = missing_width;
- ret.cy = missing_height;
- return ret;
+ TRACE("Dialog size (%d, %d) too small, not updating layout\n", dialog_rc.right, dialog_rc.bottom);
+ return;
}
/****
@@ -1399,8 +1403,7 @@ static SIZE update_layout(FileDialogImpl *This)
else
ERR("Failed to position dialog controls.\n");
- ret.cx = 0; ret.cy = 0;
- return ret;
+ return;
}
static HRESULT init_explorerbrowser(FileDialogImpl *This)
--
1.9.1
More information about the wine-patches
mailing list