winhelp: fix memory leaks (found by Smatch).
Lionel Debroux
lionel_debroux at yahoo.fr
Sun Dec 9 02:47:42 CST 2007
---
programs/winhelp/hlpfile.c | 14 ++++++++++++--
1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/programs/winhelp/hlpfile.c b/programs/winhelp/hlpfile.c
index cd14193..23f2cf5 100644
--- a/programs/winhelp/hlpfile.c
+++ b/programs/winhelp/hlpfile.c
@@ -1625,7 +1625,12 @@ static BOOL HLPFILE_UncompressLZ77_Phrases(HLPFILE* hlpfile)
phrases.offsets = HeapAlloc(GetProcessHeap(), 0, sizeof(unsigned) * (num + 1));
phrases.buffer = HeapAlloc(GetProcessHeap(), 0, dec_size);
- if (!phrases.offsets || !phrases.buffer) return FALSE;
+ if (!phrases.offsets || !phrases.buffer)
+ {
+ HeapFree(GetProcessHeap(), 0, phrases.offsets);
+ HeapFree(GetProcessHeap(), 0, phrases.buffer);
+ return FALSE;
+ }
for (i = 0; i <= num; i++)
phrases.offsets[i] = GET_USHORT(buf, head_size + 2 * i) - 2 * num - 2;
@@ -1684,7 +1689,12 @@ static BOOL HLPFILE_Uncompress_Phrases40(HLPFILE* hlpfile)
phrases.offsets = HeapAlloc(GetProcessHeap(), 0, sizeof(unsigned) * (num + 1));
phrases.buffer = HeapAlloc(GetProcessHeap(), 0, dec_size);
- if (!phrases.offsets || !phrases.buffer) return FALSE;
+ if (!phrases.offsets || !phrases.buffer)
+ {
+ HeapFree(GetProcessHeap(), 0, phrases.offsets);
+ HeapFree(GetProcessHeap(), 0, phrases.buffer);
+ return FALSE;
+ }
#define getbit() (ptr += (mask < 0), mask = mask*2 + (mask<=0), (*ptr & mask) != 0)
--
1.5.3.4
--------------000804040102090207010206--
More information about the wine-patches
mailing list