Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorNathan Ridge2017-02-14 06:43:02 +0000
committerNathan Ridge2017-09-26 17:39:54 +0000
commit2fe856426c8bffeb986a1ea11071b0e3735d48fa (patch)
tree255e16cc34296ef7addbc5c386034ab820ed10f0 /core
parent64709c980ddb83dde1ecef0794b976b89cdf7550 (diff)
downloadorg.eclipse.cdt-2fe856426c8bffeb986a1ea11071b0e3735d48fa.tar.gz
org.eclipse.cdt-2fe856426c8bffeb986a1ea11071b0e3735d48fa.tar.xz
org.eclipse.cdt-2fe856426c8bffeb986a1ea11071b0e3735d48fa.zip
Fix a couple of potential leaks of the PDOM write lock
This fixes a couple of places where a call to PDOM.acquireWriteLock() is not paired with a call to releaseWriteLock() in a finally block. Change-Id: I45a8bd9a2f6585bb4c4bc1f726fea6f9eba5fb43
Diffstat (limited to 'core')
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTagIndexTests.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java17
2 files changed, 15 insertions, 8 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTagIndexTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTagIndexTests.java
index acfe639c3c0..d65f96207d5 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTagIndexTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMTagIndexTests.java
@@ -61,7 +61,11 @@ public class PDOMTagIndexTests extends BaseTestCase {
@Override
protected void tearDown() throws Exception {
- pdom.close();
+ try {
+ pdom.close();
+ } finally {
+ pdom.releaseWriteLock();
+ }
pdomFile.delete();
super.tearDown();
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
index 044376b61ea..0aa085161dc 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
@@ -404,14 +404,17 @@ public class PDOMManager implements IWritableIndexManager, IListener {
} catch (InterruptedException e) {
throw new CoreException(CCorePlugin.createStatus(Messages.PDOMManager_creationOfIndexInterrupted, e));
}
- if (fromScratch) {
- pdom.setCreatedFromScratch(true);
- } else {
- pdom.clear();
- pdom.setClearedBecauseOfVersionMismatch(true);
+ try {
+ if (fromScratch) {
+ pdom.setCreatedFromScratch(true);
+ } else {
+ pdom.clear();
+ pdom.setClearedBecauseOfVersionMismatch(true);
+ }
+ writeProjectPDOMProperties(pdom, project);
+ } finally {
+ pdom.releaseWriteLock();
}
- writeProjectPDOMProperties(pdom, project);
- pdom.releaseWriteLock();
}
pdom.setASTFilePathResolver(new ProjectIndexerInputAdapter(cProject, false));
pdom.addListener(this);

Back to the top