From 1becc705840963a346931c098d022ce660643dbf Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 21 Jul 2010 16:15:16 +0000 Subject: [PATCH] Bug 320426: Index grows when updating files. --- .../cdt/internal/core/pdom/dom/PDOMASTAdapter.java | 2 ++ .../eclipse/cdt/internal/core/pdom/dom/PDOMFile.java | 10 ++++++++-- .../eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMASTAdapter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMASTAdapter.java index f40e2d12b04..994aadb1f27 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMASTAdapter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMASTAdapter.java @@ -535,6 +535,8 @@ public class PDOMASTAdapter { } } else if (binding instanceof ICPPTemplateParameter) { return binding; + } else if (binding instanceof ICPPConstructor) { + return binding; } return null; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java index bdd985b3cf6..7f467a1e46f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java @@ -255,7 +255,8 @@ public class PDOMFile implements IIndexFragmentFile { public void setInternalLocation(String internalLocation) throws CoreException { Database db = fLinkage.getDB(); long oldRecord = db.getRecPtr(record + LOCATION_REPRESENTATION); - db.free(oldRecord); + if (oldRecord != 0) + db.getString(oldRecord).delete(); db.putRecPtr(record + LOCATION_REPRESENTATION, db.newString(internalLocation).getRecord()); location= null; } @@ -524,7 +525,12 @@ public class PDOMFile implements IIndexFragmentFile { * @throws CoreException */ public void delete() throws CoreException { - fLinkage.getDB().free(record); + Database db = fLinkage.getDB(); + long locRecord = db.getRecPtr(record + LOCATION_REPRESENTATION); + if (locRecord != 0) + db.getString(locRecord).delete(); + + db.free(record); } public void addIncludesTo(IncludeInformation[] includeInfos) throws CoreException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java index e7694a75f76..c9d7444f1d7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMacro.java @@ -147,6 +147,7 @@ public class PDOMMacro implements IIndexMacro, IPDOMBinding, IASTFileLocation { if (params != null) { params.delete(); } + linkage.getDB().free(fRecord); } public PDOMMacroContainer getContainer() throws CoreException {