X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_db_query.c;h=61fe2e41167cdac5b32025c2790ac9faef2d244a;hb=cfef5a793e1d492ce6b6eea4c4dea60d7aa1d0e8;hp=41f40d9ca67615b48ad54ea5ee1ddf2699878020;hpb=c99e3a4d169ada9299c73e20662d17debdc32e1f;p=collectd.git diff --git a/src/utils_db_query.c b/src/utils_db_query.c index 41f40d9c..61fe2e41 100644 --- a/src/utils_db_query.c +++ b/src/utils_db_query.c @@ -268,6 +268,7 @@ static int udb_result_submit(udb_result_t *r, /* {{{ */ vl.meta = meta_data_create(); if (vl.meta == NULL) { ERROR("db query utils:: meta_data_create failed."); + free(vl.values); return -ENOMEM; } @@ -278,6 +279,7 @@ static int udb_result_submit(udb_result_t *r, /* {{{ */ ERROR("db query utils:: meta_data_add_string failed."); meta_data_destroy(vl.meta); vl.meta = NULL; + free(vl.values); return status; } } @@ -336,22 +338,20 @@ static int udb_result_prepare_result(udb_result_t const *r, /* {{{ */ if ((r == NULL) || (prep_area == NULL)) return -EINVAL; +#if COLLECT_DEBUG + assert(prep_area->ds == NULL); + assert(prep_area->instances_pos == NULL); + assert(prep_area->values_pos == NULL); + assert(prep_area->metadata_pos == NULL); + assert(prep_area->instances_buffer == NULL); + assert(prep_area->values_buffer == NULL); + assert(prep_area->metadata_buffer == NULL); +#endif + #define BAIL_OUT(status) \ - prep_area->ds = NULL; \ - sfree(prep_area->instances_pos); \ - sfree(prep_area->values_pos); \ - sfree(prep_area->metadata_pos); \ - sfree(prep_area->instances_buffer); \ - sfree(prep_area->values_buffer); \ - sfree(prep_area->metadata_buffer); \ + udb_result_finish_result(r, prep_area); \ return (status) - /* Make sure previous preparations are cleaned up. */ - udb_result_finish_result(r, prep_area); - prep_area->instances_pos = NULL; - prep_area->values_pos = NULL; - prep_area->metadata_pos = NULL; - /* Read `ds' and check number of values {{{ */ prep_area->ds = plugin_get_ds(r->type); if (prep_area->ds == NULL) { @@ -363,7 +363,8 @@ static int udb_result_prepare_result(udb_result_t const *r, /* {{{ */ if (prep_area->ds->ds_num != r->values_num) { ERROR("db query utils: udb_result_prepare_result: The type `%s' " - "requires exactly %zu value%s, but the configuration specifies %zu.", + "requires exactly %" PRIsz + " value%s, but the configuration specifies %" PRIsz ".", r->type, prep_area->ds->ds_num, (prep_area->ds->ds_num == 1) ? "" : "s", r->values_num); BAIL_OUT(-1); @@ -892,7 +893,7 @@ int udb_query_handle_result(udb_query_t const *q, /* {{{ */ do { for (size_t i = 0; i < prep_area->column_num; i++) { DEBUG("db query utils: udb_query_handle_result (%s, %s): " - "column[%zu] = %s;", + "column[%" PRIsz "] = %s;", prep_area->db_name, q->name, i, column_values[i]); } } while (0); @@ -928,7 +929,13 @@ int udb_query_prepare_result(udb_query_t const *q, /* {{{ */ if ((q == NULL) || (prep_area == NULL)) return -EINVAL; - udb_query_finish_result(q, prep_area); +#if COLLECT_DEBUG + assert(prep_area->column_num == 0); + assert(prep_area->host == NULL); + assert(prep_area->plugin == NULL); + assert(prep_area->db_name == NULL); + assert(prep_area->interval == 0); +#endif prep_area->column_num = column_num; prep_area->host = strdup(host); @@ -949,7 +956,7 @@ int udb_query_prepare_result(udb_query_t const *q, /* {{{ */ do { for (size_t i = 0; i < column_num; i++) { DEBUG("db query utils: udb_query_prepare_result: " - "query = %s; column[%zu] = %s;", + "query = %s; column[%" PRIsz "] = %s;", q->name, i, column_names[i]); } } while (0);