RFC: regedit: fix memory leak in treeview.c (found by Smatch).

Lionel_Debroux lionel_debroux at yahoo.fr
Fri Aug 31 02:54:23 CDT 2007


RefreshTreeItem leaks some heap memory in two error paths. Found in
Michael Stefaniuc's list of Wine potential bugs detected by Smatch.

This patch should be enough to silence Smatch about variable "Name", but
judging from lines 422-423, it looks very much like the return at line
407 (line numbers after applying my patch) still leaks "tvItem.pszText"
and doesn't close the registry key "hKey".
If someone else thinks my thought is correct, I'll make another patch.

2007-08-31  Lionel Debroux <lionel_debroux at yahoo.fr>
       * programs/regedit/treeview.c
       regedit: Fix memory leak in RefreshTreeItem (found by Smatch)

-------------- next part --------------
>From 20d98fe39966be0e863ffe66dc42479969370a47 Mon Sep 17 00:00:00 2001
From: Lionel Debroux <lionel_debroux at yahoo.fr>
Date: Fri, 31 Aug 2007 09:01:28 +0200
Subject: regedit: fix memory leak in treeview.c/RefreshTreeItem (found by Smatch).

---
 programs/regedit/treeview.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/programs/regedit/treeview.c b/programs/regedit/treeview.c
index 7a21f0d..d494ec8 100644
--- a/programs/regedit/treeview.c
+++ b/programs/regedit/treeview.c
@@ -374,6 +374,7 @@ static BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
     }
     tvItem.cchTextMax = dwMaxSubKeyLen;
     if (!(tvItem.pszText = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(TCHAR)))) {
+        HeapFree(GetProcessHeap(), 0, Name);
         return FALSE;
     }
 
@@ -402,6 +403,7 @@ static BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
             tvItem.mask = TVIF_TEXT;
             tvItem.hItem = childItem;
             if (!TreeView_GetItem(hwndTV, &tvItem)) {
+                HeapFree(GetProcessHeap(), 0, Name);
                 return FALSE;
             }
 
-- 
1.4.4.4



More information about the wine-patches mailing list