diff --git a/server/core/poll.cc b/server/core/poll.cc index 9017da1d7..d1ff2a28f 100644 --- a/server/core/poll.cc +++ b/server/core/poll.cc @@ -329,7 +329,7 @@ namespace struct EVENT_TIMES_CB_DATA { int rowno; - Worker::STATISTICS* stats; + Worker::STATISTICS stats; }; } @@ -372,10 +372,10 @@ eventTimesRowCallback(RESULTSET *set, void *v) resultset_row_set(row, 0, buf); } - snprintf(buf, 39, "%u", data->stats->qtimes[data->rowno]); + snprintf(buf, 39, "%u", data->stats.qtimes[data->rowno]); buf[39] = '\0'; resultset_row_set(row, 1, buf); - snprintf(buf, 39, "%u", data->stats->exectimes[data->rowno]); + snprintf(buf, 39, "%u", data->stats.exectimes[data->rowno]); buf[39] = '\0'; resultset_row_set(row, 2, buf); data->rowno++; @@ -398,10 +398,8 @@ eventTimesGetList() return NULL; } - Worker::STATISTICS s = Worker::get_statistics(); - data->rowno = 0; - data->stats = &s; + data->stats = Worker::get_statistics(); if ((set = resultset_create(eventTimesRowCallback, data)) == NULL) { diff --git a/server/core/session.cc b/server/core/session.cc index 012fb3d85..e00cb38c5 100644 --- a/server/core/session.cc +++ b/server/core/session.cc @@ -834,6 +834,10 @@ sessionRowCallback(RESULTSET *set, void *data) row = cbdata->row; cbdata->row = NULL; } + else + { + MXS_FREE(cbdata); + } return row; }