X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsn_network.c;h=3a37bb2eeb684b6d56f54ddb2f13914134a1490e;hb=3dd831f5d709112234fecf5694b065aa906fe4f8;hp=3934e91a0df880caa65d90436a2e3c0a556b4623;hpb=a09322850b6ef3ca305bb7b43bd52416375ae9c1;p=sort-networks.git diff --git a/src/sn_network.c b/src/sn_network.c index 3934e91..3a37bb2 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++) @@ -399,4 +403,20 @@ int sn_network_write (sn_network_t *n, FILE *fh) return (0); } /* int sn_network_write */ +int sn_network_write_file (sn_network_t *n, const char *file) +{ + int status; + FILE *fh; + + fh = fopen (file, "w"); + if (fh == NULL) + return (-1); + + status = sn_network_write (n, fh); + + fclose (fh); + + return (status); +} /* int sn_network_write_file */ + /* vim: set shiftwidth=2 softtabstop=2 : */