diff options
3 files changed, 25 insertions, 12 deletions
diff --git a/main/src/core/MonoDevelop.Projects/ChangeLog b/main/src/core/MonoDevelop.Projects/ChangeLog index 60be1c41ae..5897a98953 100644 --- a/main/src/core/MonoDevelop.Projects/ChangeLog +++ b/main/src/core/MonoDevelop.Projects/ChangeLog @@ -1,3 +1,16 @@ +2009-09-28 Lluis Sanchez Gual <lluis@novell.com> + + * MonoDevelop.Projects.Dom.Serialization/ParserDatabase.cs: + Don't share the name table, since it now holds temporary ids + which are exclusive to specific database serialization + contexts. Should fix bug #469562 - Invalid integer value in + completion DB. + + * MonoDevelop.Projects.Dom.Serialization/CodeCompletionDatabase.cs: + Don't share the name table, since it now holds temporary ids + which are exclusive to specific database serialization + contexts. + 2009-09-26 Mike Krüger <mkrueger@novell.com> * MonoDevelop.Projects.Dom/DomMethod.cs: Fixed parameter diff --git a/main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/CodeCompletionDatabase.cs b/main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/CodeCompletionDatabase.cs index e471a35a53..54dd578b56 100644 --- a/main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/CodeCompletionDatabase.cs +++ b/main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/CodeCompletionDatabase.cs @@ -49,7 +49,7 @@ namespace MonoDevelop.Projects.Dom.Serialization { static protected readonly int MAX_ACTIVE_COUNT = 100; static protected readonly int MIN_ACTIVE_COUNT = 10; - static protected readonly int FORMAT_VERSION = 70; + static protected readonly int FORMAT_VERSION = 71; NamespaceEntry rootNamespace; protected ArrayList references; @@ -365,6 +365,8 @@ namespace MonoDevelop.Projects.Dom.Serialization MemoryStream buffer = new MemoryStream (); BinaryWriter bufWriter = new BinaryWriter (buffer); + INameEncoder nameEncoder = pdb.CreateNameEncoder (); + // Write all class data foreach (ClassEntry ce in GetAllClasses ()) { @@ -389,7 +391,7 @@ namespace MonoDevelop.Projects.Dom.Serialization } else { buffer.Position = 0; - DomPersistence.Write (bufWriter, pdb.DefaultNameEncoder, c); + DomPersistence.Write (bufWriter, nameEncoder, c); bufWriter.Flush (); data = buffer.GetBuffer (); len = (int)buffer.Position; @@ -492,7 +494,7 @@ namespace MonoDevelop.Projects.Dom.Serialization lock (rwlock) { dataFileStream.Position = ce.Position; datareader.ReadInt32 ();// Length of data - DomType cls = DomPersistence.ReadType (datareader, pdb.DefaultNameDecoder); + DomType cls = DomPersistence.ReadType (datareader, pdb.CreateNameDecoder ()); cls.SourceProjectDom = SourceProjectDom; cls.Resolved = true; Counters.LiveTypeObjects++; @@ -1378,7 +1380,6 @@ namespace MonoDevelop.Projects.Dom public StringNameTable (string[] names) { table = names; - Array.Sort (table); Reset (); } diff --git a/main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/ParserDatabase.cs b/main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/ParserDatabase.cs index 55c01e6c99..eae79eaddc 100644 --- a/main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/ParserDatabase.cs +++ b/main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/ParserDatabase.cs @@ -56,8 +56,6 @@ namespace MonoDevelop.Projects.Dom.Serialization { internal class ParserDatabase: IParserDatabase { - StringNameTable nameTable; - static readonly string[] sharedNameTable = new string[] { "", // 505195 "System.Void", // 116020 @@ -163,7 +161,7 @@ namespace MonoDevelop.Projects.Dom.Serialization public ParserDatabase () { - nameTable = new StringNameTable (sharedNameTable); + Array.Sort (sharedNameTable); } public void Initialize () @@ -417,13 +415,14 @@ namespace MonoDevelop.Projects.Dom.Serialization //////////////////////////////////// - internal INameEncoder DefaultNameEncoder { - get { return nameTable; } + internal INameEncoder CreateNameEncoder () + { + return new StringNameTable (sharedNameTable); } - internal INameDecoder DefaultNameDecoder { - get { return nameTable; } + internal INameDecoder CreateNameDecoder () + { + return new StringNameTable (sharedNameTable); } - } } |