X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fdbi.c;h=0e5c5deca78fa32864889ac8f84235be63509cb3;hb=c9d3f76a5bd7aaa3d8772e88f8c0292e8b55f66b;hp=d013e1410056e2b15415408fbb60466675720260;hpb=79963d13c1884d1d92667cc502ad20758b084a12;p=collectd.git diff --git a/src/dbi.c b/src/dbi.c index d013e141..0e5c5dec 100644 --- a/src/dbi.c +++ b/src/dbi.c @@ -172,7 +172,9 @@ static void cdbi_database_free(cdbi_database_t *db) /* {{{ */ return; sfree(db->name); + sfree(db->select_db); sfree(db->driver); + sfree(db->host); for (size_t i = 0; i < db->driver_options_num; i++) { sfree(db->driver_options[i].key); @@ -184,7 +186,10 @@ static void cdbi_database_free(cdbi_database_t *db) /* {{{ */ if (db->q_prep_areas) for (size_t i = 0; i < db->queries_num; ++i) udb_query_delete_preparation_area(db->q_prep_areas[i]); - free(db->q_prep_areas); + sfree(db->q_prep_areas); + /* N.B.: db->queries references objects "owned" by the global queries + * variable. Free the array here, but not the content. */ + sfree(db->queries); sfree(db); } /* }}} void cdbi_database_free */ @@ -352,23 +357,20 @@ static int cdbi_config_add_database(oconfig_item_t *ci) /* {{{ */ ERROR("dbi plugin: realloc failed"); status = -1; } else { - char *name = NULL; - databases = temp; databases[databases_num] = db; databases_num++; - name = ssnprintf_alloc("dbi:%s", db->name); - - user_data_t ud = {.data = db}; - + char *name = ssnprintf_alloc("dbi:%s", db->name); plugin_register_complex_read( /* group = */ NULL, /* name = */ name ? name : db->name, /* callback = */ cdbi_read_database, /* interval = */ (db->interval > 0) ? db->interval : 0, - /* user_data = */ &ud); - free(name); + &(user_data_t){ + .data = db, + }); + sfree(name); } } @@ -409,13 +411,13 @@ static int cdbi_init(void) /* {{{ */ if (queries_num == 0) { ERROR("dbi plugin: No blocks have been found. Without them, " - "this plugin can't do anything useful, so we will returns an error."); + "this plugin can't do anything useful, so we will return an error."); return (-1); } if (databases_num == 0) { ERROR("dbi plugin: No blocks have been found. Without them, " - "this plugin can't do anything useful, so we will returns an error."); + "this plugin can't do anything useful, so we will return an error."); return (-1); }