[pacman-dev] [PATCH 3/3] pacsort: clean up if error
Rikard Falkeborn
rikard.falkeborn at gmail.com
Mon Aug 10 19:42:39 UTC 2015
* free memory
* close open file
Signed-off-by: Rikard Falkeborn <rikard.falkeborn at gmail.com>
---
src/util/pacsort.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/util/pacsort.c b/src/util/pacsort.c
index 3337d97..e7dc63e 100644
--- a/src/util/pacsort.c
+++ b/src/util/pacsort.c
@@ -484,6 +484,7 @@ int main(int argc, char *argv[])
struct list_t *list;
struct buffer_t *buffer;
size_t i;
+ int ret = 0;
/* option defaults */
opts.order = 1;
@@ -507,7 +508,8 @@ int main(int argc, char *argv[])
if(optind == argc) {
if(splitfile(stdin, buffer, list) != 0) {
fprintf(stderr, "%s: memory exhausted\n", argv[0]);
- return ENOMEM;
+ ret = ENOMEM;
+ goto cleanup;
}
} else {
while(optind < argc) {
@@ -515,7 +517,9 @@ int main(int argc, char *argv[])
if(input) {
if(splitfile(input, buffer, list) != 0) {
fprintf(stderr, "%s: memory exhausted\n", argv[0]);
- return ENOMEM;
+ fclose(input);
+ ret = ENOMEM;
+ goto cleanup;
}
fclose(input);
} else {
@@ -534,10 +538,11 @@ int main(int argc, char *argv[])
}
}
+cleanup:
list_free(list, input_free);
buffer_free(buffer);
- return 0;
+ return ret;
}
/* vim: set noet: */
--
2.5.0
More information about the pacman-dev
mailing list