This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


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

[PATCH, RFA] Fix basename bug in symtab.c


[Jim, Elena, sorry I keep saying cygnus instead of redhat :-(]

Here is a patch that fixes the problems discussed on the discussion
list.  Eli pretty much convinced me that this is the right approach.
We can still discuss the other uses of basename() in GDB, but since
this fixes a rather serious bug on FreeBSD (and I suppose other
systems as well), I'd like to get this in ASAP.

Mark


Index: ChangeLog
from  Mark Kettenis  <kettenis@gnu.org>

	* symtab.c (lookup_symtab_1): Use lbasename (NAME) instead of
	basename (NAME).  The FreeBSD basename returns a pointer to a
	static buffer, even if it's simply returning a string identical to
	its argument.
	(lookup_partial_symtab): Likewise.

Index: symtab.c
===================================================================
RCS file: /cvs/src/src/gdb/symtab.c,v
retrieving revision 1.37
diff -u -p -r1.37 symtab.c
--- symtab.c 2001/05/11 17:48:31 1.37
+++ symtab.c 2001/05/13 19:37:21
@@ -154,7 +154,7 @@ got_symtab:
 
   /* Now, search for a matching tail (only if name doesn't have any dirs) */
 
-  if (basename (name) == name)
+  if (lbasename (name) == name)
     ALL_SYMTABS (objfile, s)
     {
       if (FILENAME_CMP (basename (s->filename), name) == 0)
@@ -244,7 +244,7 @@ lookup_partial_symtab (char *name)
 
   /* Now, search for a matching tail (only if name doesn't have any dirs) */
 
-  if (basename (name) == name)
+  if (lbasename (name) == name)
     ALL_PSYMTABS (objfile, pst)
     {
       if (FILENAME_CMP (basename (pst->filename), name) == 0)


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