Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@novell.com>2009-09-28 14:23:06 +0400
committerLluis Sanchez <lluis@novell.com>2009-09-28 14:23:06 +0400
commitd83141a37f87b97a67d7a7ff31dbc5c6ad1573e6 (patch)
tree6ecf06eb980166e3a8e3e6c37a368f18632e44cb
parent244ec69322d87ba63ec35174a542ccf9918bd4d1 (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
-rw-r--r--main/src/core/MonoDevelop.Projects/ChangeLog13
-rw-r--r--main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/CodeCompletionDatabase.cs9
-rw-r--r--main/src/core/MonoDevelop.Projects/MonoDevelop.Projects.Dom.Serialization/ParserDatabase.cs15
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);
}
-
}
}