This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFA] (take two): ar.c (map_over_members): Plug memory leak.


Sorry for the noise.  This patch replaces the previous patch for
map_over_members.

OK?

2011-03-08  Michael Snyder  <msnyder@vmware.com>

	* ar.c (map_over_members): Plug memory leak.

Index: ar.c
===================================================================
RCS file: /cvs/src/src/binutils/ar.c,v
retrieving revision 1.72
diff -u -p -r1.72 ar.c
--- ar.c	8 Dec 2010 05:05:30 -0000	1.72
+++ ar.c	8 Mar 2011 20:30:20 -0000
@@ -199,7 +199,7 @@ map_over_members (bfd *arch, void (*func
       match_count = 0;
       for (head = arch->archive_next; head; head = head->archive_next)
 	{
-	  const char * filename;
+	  const char * filename = NULL, * filename2 = NULL;
 
 	  PROGRESS (1);
 	  filename = head->filename;
@@ -213,11 +213,13 @@ map_over_members (bfd *arch, void (*func
 	  else if (bfd_is_thin_archive (arch))
 	    {
 	      /* Thin archives store full pathnames.  Need to normalize.  */
+	      free (filename);
 	      filename = normalize (filename, arch);
 	    }
 
-	  if (filename != NULL
-	      && !FILENAME_CMP (normalize (*files, arch), filename))
+	  free (filename2);
+	  filename2 = normalize (*files, arch);
+	  if (filename != NULL && !FILENAME_CMP (filename2, filename))
 	    {
 	      ++match_count;
 	      if (counted_name_mode
@@ -237,6 +239,8 @@ map_over_members (bfd *arch, void (*func
 	/* xgettext:c-format */
 	fprintf (stderr, _("no entry %s in archive\n"), *files);
     }
+  free (filename);
+  free (filename2);
 }
 
 bfd_boolean operation_alters_arch = FALSE;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]