diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_clib.c | 10 |
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 | } |