Module: wine Branch: refs/heads/master Commit: 0260b269623820630529fb32e53b4f29cc2ac111 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=0260b269623820630529fb32...
Author: Piotr Caban piotr.caban@gmail.com Date: Tue Jul 18 12:55:31 2006 +0200
oleview: Added data freeing in TypeLib Viewer.
---
programs/oleview/typelib.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/programs/oleview/typelib.c b/programs/oleview/typelib.c index ff5fb1c..c516a6a 100644 --- a/programs/oleview/typelib.c +++ b/programs/oleview/typelib.c @@ -560,6 +560,36 @@ void UpdateTypeLibStatusBar(int itemID) SendMessage(typelib.hStatusBar, SB_SETTEXT, 0, (LPARAM)info); }
+void EmptyTLTree(void) +{ + HTREEITEM cur, del; + TVITEM tvi; + + tvi.mask = TVIF_PARAM; + cur = TreeView_GetChild(typelib.hTree, TVI_ROOT); + + while(TRUE) + { + del = cur; + cur = TreeView_GetChild(typelib.hTree, del); + + if(!cur) cur = TreeView_GetNextSibling(typelib.hTree, del); + if(!cur) cur = TreeView_GetParent(typelib.hTree, del); + + tvi.hItem = del; + SendMessage(typelib.hTree, TVM_GETITEM, 0, (LPARAM)&tvi); + if(tvi.lParam) + { + HeapFree(GetProcessHeap(), 0, ((TYPELIB_DATA *)tvi.lParam)->idl); + HeapFree(GetProcessHeap(), 0, (TYPELIB_DATA *)tvi.lParam); + } + + SendMessage(typelib.hTree, TVM_DELETEITEM, 0, (LPARAM)del); + + if(!cur) break; + } +} + LRESULT CALLBACK TypeLibProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) @@ -596,6 +626,7 @@ LRESULT CALLBACK TypeLibProc(HWND hWnd, TypeLibResizeChild(); break; case WM_DESTROY: + EmptyTLTree(); break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam);