aboutsummaryrefslogtreecommitdiff
path: root/jim-load.c
diff options
context:
space:
mode:
Diffstat (limited to 'jim-load.c')
-rw-r--r--jim-load.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/jim-load.c b/jim-load.c
index 480d677..f3f23d0 100644
--- a/jim-load.c
+++ b/jim-load.c
@@ -21,7 +21,20 @@
#define RTLD_LOCAL 0
#endif
-static void JimFreeLoadHandles(Jim_Interp *interp, void *data);
+static void JimFreeOneLoadHandle(void *handle)
+{
+ dlclose(handle);
+}
+
+static void JimFreeLoadHandles(Jim_Interp *interp, void *data)
+{
+ Jim_Stack *handles = data;
+
+ if (handles) {
+ Jim_StackFree(handles);
+ Jim_Free(handles);
+ }
+}
/**
* Note that Jim_LoadLibrary() requires a path to an existing file.
@@ -72,7 +85,7 @@ int Jim_LoadLibrary(Jim_Interp *interp, const char *pathName)
Jim_Stack *loadHandles = Jim_GetAssocData(interp, "load::handles");
if (loadHandles == NULL) {
loadHandles = Jim_Alloc(sizeof(*loadHandles));
- Jim_InitStack(loadHandles);
+ Jim_StackInit(loadHandles, JimFreeOneLoadHandle);
Jim_SetAssocData(interp, "load::handles", JimFreeLoadHandles, loadHandles);
}
Jim_StackPush(loadHandles, handle);
@@ -88,22 +101,6 @@ int Jim_LoadLibrary(Jim_Interp *interp, const char *pathName)
return JIM_ERR;
}
-static void JimFreeOneLoadHandle(void *handle)
-{
- dlclose(handle);
-}
-
-static void JimFreeLoadHandles(Jim_Interp *interp, void *data)
-{
- Jim_Stack *handles = data;
-
- if (handles) {
- Jim_FreeStackElements(handles, JimFreeOneLoadHandle);
- Jim_FreeStack(handles);
- Jim_Free(handles);
- }
-}
-
#else /* JIM_DYNLIB */
int Jim_LoadLibrary(Jim_Interp *interp, const char *pathName)
{