diff options
author | Andrew Ferguson | 2008-05-02 14:54:05 +0000 |
---|---|---|
committer | Andrew Ferguson | 2008-05-02 14:54:05 +0000 |
commit | 0c05265d7d2c385e958506b4696ecd5d1c7aa173 (patch) | |
tree | db6a60a197a41d61f1cfc2943cfea131cbb82d69 | |
parent | 3fb797308493b2fcd96a6f1ed04e16cb3011a2bc (diff) | |
download | org.eclipse.cdt-0c05265d7d2c385e958506b4696ecd5d1c7aa173.tar.gz org.eclipse.cdt-0c05265d7d2c385e958506b4696ecd5d1c7aa173.tar.xz org.eclipse.cdt-0c05265d7d2c385e958506b4696ecd5d1c7aa173.zip |
223521: fix for race condition encountered in GeneratePDOM.run
2 files changed, 16 insertions, 4 deletions
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 6b8998ad0e9..68fdac75a9c 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 @@ -1344,7 +1344,7 @@ public class PDOMManager implements IWritableIndexManager, IListener { } /** - * @param indexerSetupParticipant + * @param participant * @param project */ public void notifyIndexerSetup(IndexerSetupParticipant participant, ICProject project) { @@ -1369,4 +1369,14 @@ public class PDOMManager implements IWritableIndexManager, IListener { } } } + + /** + * @param project + * @return whether the specified project has been registered. If a project has + * been registered, clients can call joinIndexer with the knowledge tasks have + * been enqueued. + */ + public boolean isProjectRegistered(ICProject project) { + return getIndexer(project) != null; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java index 818696a3c0e..022f5e5c103 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java @@ -70,9 +70,11 @@ public class GeneratePDOM implements ISafeRunnable { try { final IIndexManager im = CCorePlugin.getIndexManager(); for (int i = 0; i < 20; i++) { - im.joinIndexer(Integer.MAX_VALUE, new NullProgressMonitor()); - if (!im.isIndexerSetupPostponed(cproject)) { - break; + if(CCoreInternals.getPDOMManager().isProjectRegistered(cproject)) { + im.joinIndexer(Integer.MAX_VALUE, new NullProgressMonitor()); + if (!im.isIndexerSetupPostponed(cproject)) { + break; + } } Thread.sleep(200); } |