[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