fix memory leak

This commit is contained in:
Fournier Nicolas 2015-08-05 16:07:34 +02:00
parent e6aeb4cd3d
commit 7be2cae57d

View File

@ -256,7 +256,7 @@ cmd_init (struct PERF_TALER_MINTDB_Cmd cmd[])
GNUNET_new_array (cmd[i].details.save_array.nb_saved, GNUNET_new_array (cmd[i].details.save_array.nb_saved,
struct PERF_TALER_MINTDB_Data); struct PERF_TALER_MINTDB_Data);
GNUNET_assert (NULL != cmd[i].details.save_array.data_saved); GNUNET_assert (NULL != cmd[i].details.save_array.data_saved);
cmd[i].details.save_array.data_saved->type = cmd[i].details.save_array.data_saved[0].type =
cmd[cmd[i].details.save_array.index_save].exposed.type; cmd[cmd[i].details.save_array.index_save].exposed.type;
} }
break; break;
@ -589,6 +589,17 @@ cmd_init (struct PERF_TALER_MINTDB_Cmd cmd[])
} }
break; break;
case PERF_TALER_MINTDB_CMD_END:
case PERF_TALER_MINTDB_CMD_DEBUG:
case PERF_TALER_MINTDB_CMD_LOOP:
case PERF_TALER_MINTDB_CMD_START_TRANSACTION:
case PERF_TALER_MINTDB_CMD_COMMIT_TRANSACTION:
case PERF_TALER_MINTDB_CMD_ABORT_TRANSACTION:
case PERF_TALER_MINTDB_CMD_GET_TIME:
case PERF_TALER_MINTDB_CMD_INSERT_DENOMINATION:
case PERF_TALER_MINTDB_CMD_INSERT_RESERVE:
break;
default: default:
break; break;
} }
@ -884,15 +895,15 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
case PERF_TALER_MINTDB_CMD_GET_DEPOSIT: case PERF_TALER_MINTDB_CMD_GET_DEPOSIT:
{ {
int source_index; int source_index;
struct PERF_TALER_MINTDB_Data data; struct PERF_TALER_MINTDB_Data *data;
source_index = cmd_find (state->cmd, source_index = cmd_find (state->cmd,
state->cmd[state->i].details.get_deposit.label_deposit); state->cmd[state->i].details.get_deposit.label_deposit);
GNUNET_assert (GNUNET_SYSERR != source_index); GNUNET_assert (GNUNET_SYSERR != source_index);
data = state->cmd[source_index].exposed; data = &state->cmd[source_index].exposed;
state->plugin->have_deposit (state->plugin->cls, state->plugin->have_deposit (state->plugin->cls,
state->session, state->session,
data.data.deposit); data->data.deposit);
} }
break; break;
@ -922,18 +933,19 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
case PERF_TALER_MINTDB_CMD_GET_RESERVE: case PERF_TALER_MINTDB_CMD_GET_RESERVE:
{ {
int reserve_index; int reserve_index;
struct PERF_TALER_MINTDB_Data data; struct PERF_TALER_MINTDB_Data *data;
GNUNET_assert (GNUNET_SYSERR != GNUNET_assert (GNUNET_SYSERR !=
(reserve_index = cmd_find (state->cmd, (reserve_index = cmd_find (state->cmd,
state->cmd[state->i] state->cmd[state->i]
.details.get_reserve.label_reserve))); .details.get_reserve.label_reserve)));
data_copy (&state->cmd[reserve_index].exposed,
&data); data = &state->cmd[reserve_index].exposed;
GNUNET_assert (GNUNET_OK == GNUNET_assert (GNUNET_OK ==
(state->plugin->reserve_get (state->plugin->cls, (state->plugin->reserve_get (state->plugin->cls,
state->session, state->session,
&data.data.reserve->reserve))); &data->data.reserve->reserve)));
} }
break; break;
@ -941,18 +953,17 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
{ {
int reserve_index; int reserve_index;
struct TALER_MINTDB_ReserveHistory *history; struct TALER_MINTDB_ReserveHistory *history;
struct PERF_TALER_MINTDB_Data data; struct PERF_TALER_MINTDB_Data *data;
GNUNET_assert (GNUNET_SYSERR != GNUNET_assert (GNUNET_SYSERR !=
(reserve_index = cmd_find (state->cmd, (reserve_index = cmd_find (state->cmd,
state->cmd[state->i] state->cmd[state->i]
.details.get_reserve_history.label_reserve))); .details.get_reserve_history.label_reserve)));
data_copy (&state->cmd[reserve_index].exposed, data = &state->cmd[reserve_index].exposed;
&data);
GNUNET_assert (NULL != GNUNET_assert (NULL !=
(history = state->plugin->get_reserve_history (state->plugin->cls, (history = state->plugin->get_reserve_history (state->plugin->cls,
state->session, state->session,
&data.data.reserve->reserve.pub))); &data->data.reserve->reserve.pub)));
state->plugin->free_reserve_history (state->plugin->cls, state->plugin->free_reserve_history (state->plugin->cls,
history); history);
} }
@ -974,18 +985,17 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
case PERF_TALER_MINTDB_CMD_GET_DENOMINATION: case PERF_TALER_MINTDB_CMD_GET_DENOMINATION:
{ {
int source_index; int source_index;
struct PERF_TALER_MINTDB_Data data; struct PERF_TALER_MINTDB_Data *data;
GNUNET_assert (GNUNET_SYSERR != GNUNET_assert (GNUNET_SYSERR !=
(source_index = cmd_find (state->cmd, (source_index = cmd_find (state->cmd,
state->cmd[state->i] state->cmd[state->i]
.details.get_denomination.label_denom))); .details.get_denomination.label_denom)));
data_copy (&state->cmd[source_index].exposed, data = &state->cmd[source_index].exposed;
&data);
state->plugin->get_denomination_info (state->plugin->cls, state->plugin->get_denomination_info (state->plugin->cls,
state->session, state->session,
&data.data.dki->denom_pub, &data->data.dki->denom_pub,
&data.data.dki->issue); &data->data.dki->issue);
} }
break; break;
@ -1018,18 +1028,17 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
case PERF_TALER_MINTDB_CMD_GET_WITHDRAW: case PERF_TALER_MINTDB_CMD_GET_WITHDRAW:
{ {
int source_index; int source_index;
struct PERF_TALER_MINTDB_Data data; struct PERF_TALER_MINTDB_Data *data;
GNUNET_assert (GNUNET_SYSERR != GNUNET_assert (GNUNET_SYSERR !=
(source_index = cmd_find (state->cmd, (source_index = cmd_find (state->cmd,
state->cmd[state->i] state->cmd[state->i]
.details.get_denomination.label_denom))); .details.get_denomination.label_denom)));
data_copy (&state->cmd[source_index].exposed, data = &state->cmd[source_index].exposed;
&data);
state->plugin->get_withdraw_info (state->plugin->cls, state->plugin->get_withdraw_info (state->plugin->cls,
state->session, state->session,
&data.data.coin->blind.h_coin_envelope, &data->data.coin->blind.h_coin_envelope,
&data.data.coin->blind); &data->data.coin->blind);
} }
break; break;