[augeas-devel] (read_file): Rewrite, plugging a file descriptor leak.
Jim Meyering
jim at meyering.net
Tue May 20 19:20:45 UTC 2008
This started because I noticed the FD leak.
Rewriting, the goto dropped out, so I didn't complain.
changeset: 477:3ca7609ecb7b
user: Jim Meyering <meyering at redhat.com>
date: Sun May 18 09:53:49 2008 +0200
files: src/internal.c
description:
* src/internal.c (read_file): Rewrite, plugging a file descriptor leak.
diff --git a/src/internal.c b/src/internal.c
--- a/src/internal.c
+++ b/src/internal.c
@@ -122,23 +122,20 @@
char* read_file(const char *path) {
FILE *fp = fopen(path, "r");
- char *result = NULL;
+ char *result;
size_t len;
if (!fp)
return NULL;
result = fread_file_lim(fp, MAX_READ_LEN, &len);
- if (result == NULL)
- goto error;
+ fclose (fp);
- if (len > MAX_READ_LEN || (int) len != len)
- goto error;
+ if (result != NULL
+ && len <= MAX_READ_LEN
+ && (int) len == len)
+ return result;
- return result;
- error:
- if (fp)
- fclose(fp);
free(result);
return NULL;
}
More information about the augeas-devel
mailing list