hhctrl.ocx: Handle memory allocation in OpenCHM and CloseCHM.
diff --git a/dlls/hhctrl.ocx/help.c b/dlls/hhctrl.ocx/help.c
index 0e5d4bd..e018c14 100644
--- a/dlls/hhctrl.ocx/help.c
+++ b/dlls/hhctrl.ocx/help.c
@@ -800,10 +800,7 @@
hhctrl_free(pHHInfo->pHHWinType);
if (pHHInfo->pCHMInfo)
- {
- CHM_CloseCHM(pHHInfo->pCHMInfo);
- hhctrl_free(pHHInfo->pCHMInfo);
- }
+ CloseCHM(pHHInfo->pCHMInfo);
if (pHHInfo->pWBInfo)
{
@@ -816,12 +813,16 @@
{
HHInfo *pHHInfo = hhctrl_alloc_zero(sizeof(HHInfo));
+ pHHInfo->pCHMInfo = OpenCHM(filename);
+ if(!pHHInfo->pCHMInfo) {
+ HH_Close(pHHInfo);
+ return NULL;
+ }
+
pHHInfo->pHHWinType = hhctrl_alloc_zero(sizeof(HH_WINTYPEW));
- pHHInfo->pCHMInfo = hhctrl_alloc(sizeof(CHMInfo));
pHHInfo->pWBInfo = hhctrl_alloc(sizeof(WBInfo));
- if (!CHM_OpenCHM(pHHInfo->pCHMInfo, filename)
- || !CHM_LoadWinTypeFromCHM(pHHInfo->pCHMInfo, pHHInfo->pHHWinType)) {
+ if (!CHM_LoadWinTypeFromCHM(pHHInfo->pCHMInfo, pHHInfo->pHHWinType)) {
HH_Close(pHHInfo);
return NULL;
}