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 {