aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_clib.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lj_clib.c b/src/lj_clib.c
index 64d06dbc..98d74cde 100644
--- a/src/lj_clib.c
+++ b/src/lj_clib.c
@@ -148,9 +148,13 @@ static void clib_unloadlib(CLibrary *cl)
148{ 148{
149 if (cl->handle == CLIB_DEFHANDLE) { 149 if (cl->handle == CLIB_DEFHANDLE) {
150 MSize i; 150 MSize i;
151 for (i = 0; i < CLIB_HANDLE_MAX; i++) 151 for (i = 0; i < CLIB_HANDLE_MAX; i++) {
152 if (clib_def_handle[i]) 152 void *h = clib_def_handle[i];
153 FreeLibrary((HINSTANCE)clib_def_handle[i]); 153 if (h) {
154 clib_def_handle[i] = NULL;
155 FreeLibrary((HINSTANCE)h);
156 }
157 }
154 } else if (!cl->handle) { 158 } else if (!cl->handle) {
155 FreeLibrary((HINSTANCE)cl->handle); 159 FreeLibrary((HINSTANCE)cl->handle);
156 } 160 }