2006-01-03 Fred Fish * 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: /cvsroots/latest/src/gdb/gdb/objfiles.c,v retrieving revision 1.1.1.2 diff -c -p -r1.1.1.2 objfiles.c *** objfiles.c 30 Dec 2005 18:53:15 -0000 1.1.1.2 --- objfiles.c 3 Jan 2006 15:57:05 -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,457 ---- 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. Update: We are called via ! objfile_purge_solibs which doesn't call clear_symtab_users. */ 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);