diff --git a/ChangeLog b/ChangeLog index 86adf6ef..2adf3c09 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-02-27 Martin Baulig + + * frontends/gui/SourceManager.cs (GetSourceView): Use the + SourceFile / ISourceBuffer as hash key, not the IMethodSource. + 2003-02-27 Martin Baulig * backends/server/server.h (CommandError): Cleaned this up. diff --git a/frontends/gui/SourceManager.cs b/frontends/gui/SourceManager.cs index 94b8c6f1..d5a213b5 100644 --- a/frontends/gui/SourceManager.cs +++ b/frontends/gui/SourceManager.cs @@ -201,12 +201,21 @@ string[] GetSource (IMethodSource source) return buffer.Contents; } + object GetSourceKey (IMethodSource source) + { + if (source.IsDynamic) + return source.SourceBuffer; + else + return source.SourceFile; + } + SourceView GetSourceView (IMethod method, IMethodSource source) { if (source == null) return disassembler_view; - SourceList view = (SourceList) sources [source]; + object source_key = GetSourceKey (source); + SourceList view = (SourceList) sources [source_key]; if (view != null) return view; @@ -217,7 +226,7 @@ SourceView GetSourceView (IMethod method, IMethodSource source) view = CreateSourceView (source.Name, String.Join ("\n", contents)); view.Widget.ShowAll (); - sources [source] = view; + sources [source_key] = view; notebook.InsertPage (view.Widget, view.TabWidget, -1); notebook.SetMenuLabelText (view.Widget, source.Name); view.TabWidget.ButtonClicked += new EventHandler (close_tab);