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) { if (cl->handle == CLIB_DEFHANDLE) { MSize i; - for (i = 0; i < CLIB_HANDLE_MAX; i++) - if (clib_def_handle[i]) - FreeLibrary((HINSTANCE)clib_def_handle[i]); + for (i = 0; i < CLIB_HANDLE_MAX; i++) { + void *h = clib_def_handle[i]; + if (h) { + clib_def_handle[i] = NULL; + FreeLibrary((HINSTANCE)h); + } + } } else if (!cl->handle) { FreeLibrary((HINSTANCE)cl->handle); }