[commit] Clear current source symtab if belongs to objfile being freed

Fred Fish fnf@specifix.com
Fri Jan 6 16:26:00 GMT 2006


On Thursday 05 January 2006 17:08, Jim Blandy wrote:
> Okay.  The original patch is fine; consider the doc change I suggested.

Done.  Here is the revised patch.

-Fred

 2006-01-06  Fred Fish  <fnf@specifix.com>

	* objfiles.c (source.h): Include.
	(free_objfile): Update comment about clear_symtab_users().
	(free_objfile): Check all symtabs of objfile being freed and if
	one of them is the current source symtab, call
 	clear_current_source_symtab_and_line().

Index: objfiles.c
===================================================================
RCS file: /cvs/src/src/gdb/objfiles.c,v
retrieving revision 1.62
diff -c -p -r1.62 objfiles.c
*** objfiles.c	17 Dec 2005 22:34:01 -0000	1.62
--- objfiles.c	6 Jan 2006 16:22:26 -0000
***************
*** 45,50 ****
--- 45,51 ----
  #include "breakpoint.h"
  #include "block.h"
  #include "dictionary.h"
+ #include "source.h"
  
  /* Prototypes for local functions */
  
*************** free_objfile (struct objfile *objfile)
*** 432,441 ****
       is unknown, but we play it safe for now and keep each action until
       it is shown to be no longer needed. */
  
!   /* I *think* all our callers call clear_symtab_users.  If so, no need
!      to call this here.  */
    clear_pc_function_cache ();
  
    /* The last thing we do is free the objfile struct itself. */
  
    objfile_free_data (objfile);
--- 433,456 ----
       is unknown, but we play it safe for now and keep each action until
       it is shown to be no longer needed. */
  
!   /* Not all our callers call clear_symtab_users (objfile_purge_solibs,
!      for example), so we need to call this here.  */
    clear_pc_function_cache ();
  
+   /* Check to see if the current_source_symtab belongs to this objfile,
+      and if so, call clear_current_source_symtab_and_line. */
+ 
+   {
+     struct symtab_and_line cursal = get_current_source_symtab_and_line ();
+     struct symtab *s;
+ 
+     ALL_OBJFILE_SYMTABS (objfile, s)
+       {
+ 	if (s == cursal.symtab)
+ 	  clear_current_source_symtab_and_line ();
+       }
+   }
+ 
    /* The last thing we do is free the objfile struct itself. */
  
    objfile_free_data (objfile);




More information about the Gdb-patches mailing list