# HG changeset patch # User Eric Blake # Date 1256845132 21600 # Node ID 57423bea6079f179c8de39ad86e98844bf2e86f5 # Parent d642b5a319a9cec3cd065b783c9eef2b0a5f58ab 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 diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-10-29 Eric Blake + 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. diff --git a/lib/argp-namefrob.h b/lib/argp-namefrob.h --- a/lib/argp-namefrob.h +++ b/lib/argp-namefrob.h @@ -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 . @@ -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 diff --git a/modules/argp b/modules/argp --- a/modules/argp +++ b/modules/argp @@ -24,7 +24,7 @@ Depends-on: alloca -dirname +dirname-lgpl getopt-gnu strchrnul sysexits