void osync_plugin_info_unref(OSyncPluginInfo *info) { osync_assert(info); if (g_atomic_int_dec_and_test(&(info->ref_count))) { if (info->config) osync_plugin_config_unref(info->config); if (info->configdir) osync_free(info->configdir); if (info->groupname) osync_free(info->groupname); while (info->objtype_sinks) { OSyncObjTypeSink *sink = info->objtype_sinks->data; osync_objtype_sink_unref(sink); info->objtype_sinks = osync_list_remove(info->objtype_sinks, sink); } if (info->main_sink) osync_objtype_sink_unref(info->main_sink); if (info->version) osync_version_unref(info->version); if (info->capabilities) osync_capabilities_unref(info->capabilities); if (info->formatenv) osync_format_env_unref(info->formatenv); osync_free(info); } }
static void free_env(plugin_environment *env) { while (env->sink_envs) { sink_environment *sinkenv = env->sink_envs->data; if (sinkenv->sink) osync_objtype_sink_unref(sinkenv->sink); env->sink_envs = osync_list_remove(env->sink_envs, sinkenv); } osync_free(env); }
static void mock_finalize(void *data) { mock_env *env = data; while (env->directories) { MockDir *dir = env->directories->data; osync_plugin_resource_unref(dir->res); osync_objformat_unref(dir->objformat); env->directories = g_list_remove(env->directories, dir); g_free(dir); } if (env->mainsink) osync_objtype_sink_unref(env->mainsink); g_free(env); }