Piotr Caban : oleview: Added data freeing in TypeLib Viewer.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jul 19 12:32:00 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 0260b269623820630529fb32e53b4f29cc2ac111
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=0260b269623820630529fb32e53b4f29cc2ac111

Author: Piotr Caban <piotr.caban at 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);




More information about the wine-cvs mailing list