X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_db_query.c;h=6b3c056cb31d6bad732ec133a658c8645a044069;hb=9ee4ca88407137ee5d9588c18f9edea69ee2ace7;hp=dcac80764c665ca1dd98a456feea0cb2386692c4;hpb=a04ffbda508739433df0975328100e33e7986c87;p=collectd.git diff --git a/src/utils_db_query.c b/src/utils_db_query.c index dcac8076..6b3c056c 100644 --- a/src/utils_db_query.c +++ b/src/utils_db_query.c @@ -184,7 +184,7 @@ static int udb_config_set_uint (unsigned int *ret_value, /* {{{ */ */ static int udb_result_submit (udb_result_t *r, /* {{{ */ udb_result_preparation_area_t *r_area, - const udb_query_t const *q, udb_query_preparation_area_t *q_area) + udb_query_t const *q, udb_query_preparation_area_t *q_area) { value_list_t vl = VALUE_LIST_INIT; size_t i; @@ -192,8 +192,9 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */ assert (r != NULL); assert (r_area->ds != NULL); assert (((size_t) r_area->ds->ds_num) == r->values_num); + assert (r->values_num > 0); - vl.values = (value_t *) calloc (r_area->ds->ds_num, sizeof (value_t)); + vl.values = (value_t *) calloc (r->values_num, sizeof (value_t)); if (vl.values == NULL) { ERROR ("db query utils: malloc failed."); @@ -219,7 +220,7 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */ sstrncpy (vl.host, q_area->host, sizeof (vl.host)); sstrncpy (vl.plugin, q_area->plugin, sizeof (vl.plugin)); - sstrncpy (vl.plugin_instance, q_area->db_name, sizeof (vl.type_instance)); + sstrncpy (vl.plugin_instance, q_area->db_name, sizeof (vl.plugin_instance)); sstrncpy (vl.type, r->type, sizeof (vl.type)); /* Set vl.type_instance {{{ */ @@ -259,7 +260,7 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */ return (0); } /* }}} void udb_result_submit */ -static void udb_result_finish_result (const udb_result_t const *r, /* {{{ */ +static void udb_result_finish_result (udb_result_t const *r, /* {{{ */ udb_result_preparation_area_t *prep_area) { if ((r == NULL) || (prep_area == NULL)) @@ -275,7 +276,7 @@ static void udb_result_finish_result (const udb_result_t const *r, /* {{{ */ static int udb_result_handle_result (udb_result_t *r, /* {{{ */ udb_query_preparation_area_t *q_area, udb_result_preparation_area_t *r_area, - const udb_query_t const *q, char **column_values) + udb_query_t const *q, char **column_values) { size_t i; @@ -290,7 +291,7 @@ static int udb_result_handle_result (udb_result_t *r, /* {{{ */ return udb_result_submit (r, r_area, q, q_area); } /* }}} int udb_result_handle_result */ -static int udb_result_prepare_result (const udb_result_t const *r, /* {{{ */ +static int udb_result_prepare_result (udb_result_t const *r, /* {{{ */ udb_result_preparation_area_t *prep_area, char **column_names, size_t column_num) { @@ -542,7 +543,7 @@ static int udb_result_create (const char *query_name, /* {{{ */ /* * Query private functions */ -void udb_query_free_one (udb_query_t *q) /* {{{ */ +static void udb_query_free_one (udb_query_t *q) /* {{{ */ { if (q == NULL) return; @@ -825,7 +826,7 @@ int udb_query_check_version (udb_query_t *q, unsigned int version) /* {{{ */ return (1); } /* }}} int udb_query_check_version */ -void udb_query_finish_result (const udb_query_t const *q, /* {{{ */ +void udb_query_finish_result (udb_query_t const *q, /* {{{ */ udb_query_preparation_area_t *prep_area) { udb_result_preparation_area_t *r_area; @@ -851,7 +852,7 @@ void udb_query_finish_result (const udb_query_t const *q, /* {{{ */ } } /* }}} void udb_query_finish_result */ -int udb_query_handle_result (const udb_query_t const *q, /* {{{ */ +int udb_query_handle_result (udb_query_t const *q, /* {{{ */ udb_query_preparation_area_t *prep_area, char **column_values) { udb_result_preparation_area_t *r_area; @@ -904,7 +905,7 @@ int udb_query_handle_result (const udb_query_t const *q, /* {{{ */ return (0); } /* }}} int udb_query_handle_result */ -int udb_query_prepare_result (const udb_query_t const *q, /* {{{ */ +int udb_query_prepare_result (udb_query_t const *q, /* {{{ */ udb_query_preparation_area_t *prep_area, const char *host, const char *plugin, const char *db_name, char **column_names, size_t column_num, cdtime_t interval) @@ -976,10 +977,9 @@ udb_query_allocate_preparation_area (udb_query_t *q) /* {{{ */ udb_result_preparation_area_t **next_r_area; udb_result_t *r; - q_area = (udb_query_preparation_area_t *)malloc (sizeof (*q_area)); + q_area = malloc (sizeof (*q_area)); if (q_area == NULL) return NULL; - memset (q_area, 0, sizeof (*q_area)); next_r_area = &q_area->result_prep_areas; @@ -987,14 +987,18 @@ udb_query_allocate_preparation_area (udb_query_t *q) /* {{{ */ { udb_result_preparation_area_t *r_area; - r_area = (udb_result_preparation_area_t *)malloc (sizeof (*r_area)); + r_area = malloc (sizeof (*r_area)); if (r_area == NULL) { - for (r_area = q_area->result_prep_areas; - r_area != NULL; r_area = r_area->next) + udb_result_preparation_area_t *a = q_area->result_prep_areas; + + while (a != NULL) { - free (r_area); + udb_result_preparation_area_t *next = a->next; + sfree (a); + a = next; } + free (q_area); return NULL; }