diff options
author | Lluis Sanchez <lluis@novell.com> | 2009-09-28 14:23:06 +0400 |
---|---|---|
committer | Lluis Sanchez <lluis@novell.com> | 2009-09-28 14:23:06 +0400 |
commit | d83141a37f87b97a67d7a7ff31dbc5c6ad1573e6 (patch) | |
tree | 6ecf06eb980166e3a8e3e6c37a368f18632e44cb | |
parent | 244ec69322d87ba63ec35174a542ccf9918bd4d1 (diff) |
* 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.
svn path=/trunk/monodevelop/; revision=142739
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); } - } } |