]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
split: plug nominal leaks
authorJim Meyering <meyering@redhat.com>
Thu, 2 Aug 2012 17:31:36 +0000 (19:31 +0200)
committerJim Meyering <meyering@redhat.com>
Sat, 4 Aug 2012 09:32:01 +0000 (11:32 +0200)
* src/split.c (lines_rr) [IF_LINT]: Plug a harmless leak.
(main) [IF_LINT]: Free a usually-small (~70KB) buffer
just before exit, mainly to take this off the radar of
leak-detecting tools.

Improved-by: Pádraig Brady.
src/split.c

index 7ba743cb08c98f192f94e635901dd2076b36f1a0..d1037eca74587670a9feb690a8031df05fbe2d32 100644 (file)
@@ -1044,6 +1044,7 @@ no_filters:
           files[i_file].ofd = OFD_APPEND;
         }
     }
+  IF_LINT (free (files));
 }
 
 #define FAIL_ONLY_ONE_WAY()                                    \
@@ -1075,7 +1076,6 @@ main (int argc, char **argv)
 {
   enum Split_type split_type = type_undef;
   size_t in_blk_size = 0;      /* optimal block size of input file device */
-  char *buf;                   /* file i/o buffer */
   size_t page_size = getpagesize ();
   uintmax_t k_units = 0;
   uintmax_t n_units;
@@ -1382,7 +1382,8 @@ main (int argc, char **argv)
       file_size = MAX (file_size, n_units);
     }
 
-  buf = ptr_align (xmalloc (in_blk_size + 1 + page_size - 1), page_size);
+  void *b = xmalloc (in_blk_size + 1 + page_size - 1);
+  char *buf = ptr_align (b, page_size);
 
   /* When filtering, closure of one pipe must not terminate the process,
      as there may still be other streams expecting input from us.  */
@@ -1432,6 +1433,8 @@ main (int argc, char **argv)
       abort ();
     }
 
+  IF_LINT (free (b));
+
   if (close (STDIN_FILENO) != 0)
     error (EXIT_FAILURE, errno, "%s", infile);
   closeout (NULL, output_desc, filter_pid, outfile);