projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'collectd-5.7'
[collectd.git]
/
src
/
daemon
/
plugin.c
diff --git
a/src/daemon/plugin.c
b/src/daemon/plugin.c
index
0451e8a
..
ae99d5f
100644
(file)
--- a/
src/daemon/plugin.c
+++ b/
src/daemon/plugin.c
@@
-191,16
+191,21
@@
static int plugin_update_internal_statistics(void) { /* {{{ */
return 0;
} /* }}} int plugin_update_internal_statistics */
return 0;
} /* }}} int plugin_update_internal_statistics */
-static void
destroy_callback(callback_func_t *cf
) /* {{{ */
+static void
free_userdata(user_data_t const *ud
) /* {{{ */
{
{
- if (
cf
== NULL)
+ if (
ud
== NULL)
return;
return;
- if ((cf->cf_udata.data != NULL) && (cf->cf_udata.free_func != NULL)) {
- cf->cf_udata.free_func(cf->cf_udata.data);
- cf->cf_udata.data = NULL;
- cf->cf_udata.free_func = NULL;
+ if ((ud->data != NULL) && (ud->free_func != NULL)) {
+ ud->free_func(ud->data);
}
}
+} /* }}} void free_userdata */
+
+static void destroy_callback(callback_func_t *cf) /* {{{ */
+{
+ if (cf == NULL)
+ return;
+ free_userdata(&cf->cf_udata);
sfree(cf);
} /* }}} void destroy_callback */
sfree(cf);
} /* }}} void destroy_callback */
@@
-345,6
+350,7
@@
static int create_register_callback(llist_t **list, /* {{{ */
cf = calloc(1, sizeof(*cf));
if (cf == NULL) {
cf = calloc(1, sizeof(*cf));
if (cf == NULL) {
+ free_userdata(ud);
ERROR("plugin: create_register_callback: calloc failed.");
return -1;
}
ERROR("plugin: create_register_callback: calloc failed.");
return -1;
}
@@
-1120,8
+1126,7
@@
static int plugin_insert_read(read_func_t *rf) {
if (le != NULL) {
pthread_mutex_unlock(&read_lock);
WARNING("The read function \"%s\" is already registered. "
if (le != NULL) {
pthread_mutex_unlock(&read_lock);
WARNING("The read function \"%s\" is already registered. "
- "Check for duplicate \"LoadPlugin\" lines "
- "in your configuration!",
+ "Check for duplicates in your configuration!",
rf->rf_name);
return EINVAL;
}
rf->rf_name);
return EINVAL;
}
@@
-1186,6
+1191,7
@@
int plugin_register_complex_read(const char *group, const char *name,
rf = calloc(1, sizeof(*rf));
if (rf == NULL) {
rf = calloc(1, sizeof(*rf));
if (rf == NULL) {
+ free_userdata(user_data);
ERROR("plugin_register_complex_read: calloc failed.");
return ENOMEM;
}
ERROR("plugin_register_complex_read: calloc failed.");
return ENOMEM;
}
@@
-1211,6
+1217,7
@@
int plugin_register_complex_read(const char *group, const char *name,
status = plugin_insert_read(rf);
if (status != 0) {
status = plugin_insert_read(rf);
if (status != 0) {
+ free_userdata(&rf->rf_udata);
sfree(rf->rf_name);
sfree(rf);
}
sfree(rf->rf_name);
sfree(rf);
}
@@
-1303,11
+1310,7
@@
int plugin_register_flush(const char *name, plugin_flush_cb callback,
});
sfree(flush_name);
});
sfree(flush_name);
- if (status != 0) {
- sfree(cb->name);
- sfree(cb);
- return status;
- }
+ return status;
}
return 0;
}
return 0;