* Sync up to trunk head (r64716).
[reactos.git] / base / applications / rapps / loaddlg.c
index 316c86b..0b58019 100644 (file)
@@ -205,7 +205,7 @@ static
 DWORD WINAPI
 ThreadFunc(LPVOID Context)
 {
-    IBindStatusCallback *dl;
+    IBindStatusCallback *dl = NULL;
     WCHAR path[MAX_PATH];
     LPWSTR p;
     HWND Dlg = (HWND) Context;
@@ -217,7 +217,7 @@ ThreadFunc(LPVOID Context)
     BOOL bCab = FALSE;
     HINTERNET hOpen = NULL;
     HINTERNET hFile = NULL;
-    HANDLE hOut = NULL;
+    HANDLE hOut = INVALID_HANDLE_VALUE;
     unsigned char lpBuffer[4096];
     const LPWSTR lpszAgent = L"RApps/1.0";
 
@@ -262,6 +262,7 @@ ThreadFunc(LPVOID Context)
     /* download it */
     bTempfile = TRUE;
     dl = CreateDl(Context, &bCancelled);
+    if (dl == NULL) goto end;
 
     hOpen = InternetOpenW(lpszAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
     if (!hOpen) goto end;
@@ -282,9 +283,10 @@ ThreadFunc(LPVOID Context)
         IBindStatusCallback_OnProgress(dl, dwCurrentBytesRead, dwContentLen, 0, AppInfo->szUrlDownload);
     }
     while (dwBytesRead);
-    
+
     CloseHandle(hOut);
-    if (dl) IBindStatusCallback_Release(dl);
+    hOut = INVALID_HANDLE_VALUE;
+
     if (bCancelled) goto end;
 
     ShowWindow(Dlg, SW_HIDE);
@@ -295,10 +297,12 @@ ThreadFunc(LPVOID Context)
         ShellExecuteW( NULL, L"open", path, NULL, NULL, SW_SHOWNORMAL );
     }
 end:
-    CloseHandle(hOut);
+    if (hOut != INVALID_HANDLE_VALUE) CloseHandle(hOut);
     InternetCloseHandle(hFile);
     InternetCloseHandle(hOpen);
 
+    if (dl) IBindStatusCallback_Release(dl);
+
     if (bTempfile)
     {
         if (bCancelled || (SettingsInfo.bDelInstaller && !bCab))