From 342eb75d669cc3afa641ee926c4d01f50699b205 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 15 May 2013 11:35:47 +0000 Subject: removed unnecessary malloc --- src/set/gnunet-service-set.c | 5 +++-- src/set/gnunet-service-set_union.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/set/gnunet-service-set.c b/src/set/gnunet-service-set.c index 3ed896775..9ac0fbee6 100644 --- a/src/set/gnunet-service-set.c +++ b/src/set/gnunet-service-set.c @@ -324,7 +324,7 @@ handle_client_create (void *cls, return; } - set = GNUNET_new (struct Set); + set = NULL; switch (ntohs (msg->operation)) { @@ -336,12 +336,13 @@ handle_client_create (void *cls, set = _GSS_union_set_create (); break; default: - GNUNET_free (set); GNUNET_break (0); GNUNET_SERVER_client_disconnect (client); return; } + GNUNET_assert (NULL != set); + set->client = client; GNUNET_SERVER_client_keep (client); set->client_mq = GNUNET_MQ_queue_for_server_client (client); diff --git a/src/set/gnunet-service-set_union.c b/src/set/gnunet-service-set_union.c index 694fb6056..05b125047 100644 --- a/src/set/gnunet-service-set_union.c +++ b/src/set/gnunet-service-set_union.c @@ -364,6 +364,34 @@ destroy_elements (struct UnionState *us) } + +/** + * Iterator over hash map entries. + * + * @param cls closure + * @param key current key code + * @param value value in the hash map + * @return GNUNET_YES if we should continue to + * iterate, + * GNUNET_NO if not. + */ +static int +destroy_key_to_element_iter (void *cls, + uint32_t key, + void *value) +{ + struct KeyEntry *k = value; + + while (NULL != k) + { + struct KeyEntry *k_tmp = k; + k = k->next_colliding; + GNUNET_free (k_tmp); + } + return GNUNET_YES; +} + + /** * Destroy a union operation, and free all resources * associated with it. @@ -400,6 +428,7 @@ destroy_union_operation (struct UnionEvaluateOperation *eo) } if (NULL != eo->key_to_element) { + GNUNET_CONTAINER_multihashmap32_iterate (eo->key_to_element, destroy_key_to_element_iter, NULL); GNUNET_CONTAINER_multihashmap32_destroy (eo->key_to_element); eo->key_to_element = NULL; } @@ -1030,6 +1059,8 @@ handle_p2p_elements (void *cls, const struct GNUNET_MessageHeader *mh) insert_element (eo, ee); send_client_element (eo, &ee->element); + + GNUNET_free (ee); } -- cgit v1.2.3