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;
     }