X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsn_network.c;h=7aa1ae9dd078d1fd316269fcea7a0c0a6373f0d6;hb=92bfdba1d7e2dcb716eb1fe3ac286e42301db33d;hp=3934e91a0df880caa65d90436a2e3c0a556b4623;hpb=ca99c8ef18a6f87a74385103c043e334d7e98c18;p=sort-networks.git diff --git a/src/sn_network.c b/src/sn_network.c index 3934e91..7aa1ae9 100644 --- a/src/sn_network.c +++ b/src/sn_network.c @@ -34,6 +34,7 @@ void sn_network_destroy (sn_network_t *n) sn_stage_destroy (n->stages[i]); n->stages[i] = NULL; } + free (n->stages); n->stages = NULL; } @@ -68,8 +69,11 @@ int sn_network_stage_remove (sn_network_t *n, int s_num) n->stages[s_num] = NULL; if (nmemb > 0) + { memmove (n->stages + s_num, n->stages + (s_num + 1), nmemb * sizeof (sn_stage_t *)); + n->stages[n->stages_num - 1] = NULL; + } n->stages_num--; /* Free the unused memory */ @@ -202,13 +206,13 @@ static int sn_network_add_bitonic_merger_recursive (sn_network_t *n, int m; int i; + if (num == 1) + return (0); + s = sn_stage_create (n->stages_num); if (s == NULL) return (-1); - if (num == 1) - return (0); - m = num / 2; for (i = low; i < (low + m); i++)