changeset 12214:57423bea6079

argp: avoid memory leak argp has been leaking memory since commit 79c0a43, in Jul 2006. * modules/argp (Depends-on): Use dirname-lgpl, not dirname. * lib/argp-namefrob.h (__argp_base_name): Use last_component, not base_name, since the latter malloc()s and can call exit(). Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Thu, 29 Oct 2009 13:38:52 -0600
parents d642b5a319a9
children b1ff181f6269
files ChangeLog lib/argp-namefrob.h modules/argp
diffstat 3 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Oct 29 11:44:12 2009 -0600
+++ b/ChangeLog	Thu Oct 29 13:38:52 2009 -0600
@@ -1,5 +1,11 @@
 2009-10-29  Eric Blake  <ebb9@byu.net>
 
+	argp: avoid memory leak
+	* modules/argp (Depends-on): Use dirname-lgpl, not dirname.
+	* lib/argp-namefrob.h (__argp_base_name): Use last_component, not
+	base_name, since the latter malloc()s and can call exit().
+	Leak introduced 2006-07-03.
+
 	dirname-lgpl: adjust clients that don't need full dirname
 	* modules/backupfile (Depends-on): Use dirname-lgpl, not dirname.
 	* modules/filenamecat (Depends-on): Likewise.
--- a/lib/argp-namefrob.h	Thu Oct 29 11:44:12 2009 -0600
+++ b/lib/argp-namefrob.h	Thu Oct 29 13:38:52 2009 -0600
@@ -1,5 +1,5 @@
 /* Name frobnication for compiling argp outside of glibc
-   Copyright (C) 1997, 2003, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2003, 2007, 2009 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Miles Bader <miles@gnu.ai.mit.edu>.
 
@@ -147,7 +147,7 @@
 extern char *__argp_base_name(const char *arg);
 #else
 # include "dirname.h"
-# define __argp_base_name base_name
+# define __argp_base_name last_component
 #endif
 
 #if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
--- a/modules/argp	Thu Oct 29 11:44:12 2009 -0600
+++ b/modules/argp	Thu Oct 29 13:38:52 2009 -0600
@@ -24,7 +24,7 @@
 
 Depends-on:
 alloca
-dirname
+dirname-lgpl
 getopt-gnu
 strchrnul
 sysexits