const char * vp_dlclose(char *args) { vp_stack_t stack; HINSTANCE handle; VP_RETURN_IF_FAIL(vp_stack_from_args(&stack, args)); VP_RETURN_IF_FAIL(vp_stack_pop_num(&stack, "%p", &handle)); if (!FreeLibrary(handle)) return lasterror(); vp_stack_free(&_result); return NULL; }
const char * vp_dlclose(char *args) { vp_stack_t stack; void *handle; VP_RETURN_IF_FAIL(vp_stack_from_args(&stack, args)); VP_RETURN_IF_FAIL(vp_stack_pop_num(&stack, "%p", &handle)); /* On FreeBSD6, to call dlclose() twice with same pointer causes SIGSEGV */ if (dlclose(handle) == -1) return dlerror(); vp_stack_free(&_result); return NULL; }