summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--setup_native/source/win32/customactions/sellang/sorttree.cxx32
1 files changed, 31 insertions, 1 deletions
diff --git a/setup_native/source/win32/customactions/sellang/sorttree.cxx b/setup_native/source/win32/customactions/sellang/sorttree.cxx
index 25c6c6d1d25c..41695e290d78 100644
--- a/setup_native/source/win32/customactions/sellang/sorttree.cxx
+++ b/setup_native/source/win32/customactions/sellang/sorttree.cxx
@@ -23,15 +23,45 @@ extern "C" UINT __stdcall SortTree(MSIHANDLE)
// Sort items (languages) in SelectionTree control, fdo#46355
HWND hwndMSI = FindWindow(TEXT("MsiDialogCloseClass"), NULL);
+ if (hwndMSI == NULL)
+ {
+ OutputDebugString("SortTree: MsiDialogCloseClass not found\n");
+ return ERROR_SUCCESS;
+ }
HWND hwndTV = FindWindowEx(hwndMSI, NULL, TEXT("SysTreeView32"), NULL);
+ if (hwndTV == NULL)
+ {
+ OutputDebugString("SortTree: SysTreeView32 not found\n");
+ return ERROR_SUCCESS;
+ }
HTREEITEM treeRoot = TreeView_GetRoot(hwndTV);
+ if (treeRoot == NULL)
+ {
+ OutputDebugString("SortTree: TreeView_GetRoot failed\n");
+ return ERROR_SUCCESS;
+ }
HTREEITEM optional = TreeView_GetNextSibling(hwndTV, treeRoot);
+ if (optional == NULL)
+ {
+ OutputDebugString("SortTree: Optional Components branch not found\n");
+ return ERROR_SUCCESS;
+ }
HTREEITEM dicts = TreeView_GetChild(hwndTV, optional);
+ if (dicts == NULL)
+ {
+ OutputDebugString("SortTree: Dictionaries branch not found\n");
+ return ERROR_SUCCESS;
+ }
TreeView_SortChildren(hwndTV, dicts, TRUE);
HTREEITEM langs = TreeView_GetNextSibling(hwndTV, optional);
+ if (langs == NULL)
+ {
+ OutputDebugString("SortTree: Additional UI Languages branch not found\n");
+ return ERROR_SUCCESS;
+ }
TreeView_SortChildren(hwndTV, langs, TRUE);
- return ERROR_SUCCESS;
+ return ERROR_SUCCESS;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */