@@ -78,9 +78,11 @@ void kscheme_free(kscheme_t *scheme)
if (!scheme)
return;
+ // kustore_free() must be before plugin_free() because plugin_free()
+ // does dlclose() and ustore free function is will not be accessible
+ kustore_free(scheme->ustore);
faux_list_free(scheme->plugins);
faux_list_free(scheme->entrys);
- kustore_free(scheme->ustore);
faux_free(scheme);
}
@@ -71,6 +71,11 @@ kudata_t *kustore_slot_new(kustore_t *ustore,
kudata_set_data(udata, data);
kudata_set_free_fn(udata, free_fn);
+ if (!kustore_add_udatas(ustore, udata)) {
+ kudata_free(udata);
+ return NULL;
+ }
+
return udata;