diff options
author | Nathan Ridge | 2017-02-14 06:43:02 +0000 |
---|---|---|
committer | Nathan Ridge | 2017-09-26 17:39:54 +0000 |
commit | 2fe856426c8bffeb986a1ea11071b0e3735d48fa (patch) | |
tree | 255e16cc34296ef7addbc5c386034ab820ed10f0 /core | |
parent | 64709c980ddb83dde1ecef0794b976b89cdf7550 (diff) | |
download | org.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')
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); |