foxygit / doom Log in
commit 59f737ad1b32fafb6f21edcaa4dd79c3444a880a
Author:     Fabian Greffrath <fabian@greffrath.com>
AuthorDate: Mon Jan 28 09:34:12 2019 +0100
Commit:     Fabian Greffrath <fabian@greffrath.com>
CommitDate: Mon Jan 28 09:34:12 2019 +0100

    txt: free already loaded libraries on LoadLibraryW() failure

    This fixes a future "Resource leak" cppcheck error.
---
 textscreen/txt_fileselect.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/textscreen/txt_fileselect.c b/textscreen/txt_fileselect.c
index 21016b79..922791dc 100644
--- a/textscreen/txt_fileselect.c
+++ b/textscreen/txt_fileselect.c
@@ -175,14 +175,21 @@ static BOOL (*MySHGetPathFromIDList)(LPITEMIDLIST, LPTSTR) = NULL;

 static int LoadDLLs(void)
 {
-    HMODULE comdlg32 = LoadLibraryW(L"comdlg32.dll");
-    HMODULE shell32 = LoadLibraryW(L"shell32.dll");
+    HMODULE comdlg32, shell32

-    if (comdlg32 == NULL || shell32 == NULL)
+    comdlg32 = LoadLibraryW(L"comdlg32.dll");
+    if (comdlg32 == NULL)
     {
         return 0;
     }

+    shell32 = LoadLibraryW(L"shell32.dll");
+    if (shell32 == NULL)
+    {
+        FreeLibrary(comdlg32);
+        return 0;
+    }
+
     MyGetOpenFileName =
         (void *) GetProcAddress(comdlg32, "GetOpenFileNameA");
     MySHBrowseForFolder =