Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Ferguson2008-05-02 14:54:05 +0000
committerAndrew Ferguson2008-05-02 14:54:05 +0000
commit0c05265d7d2c385e958506b4696ecd5d1c7aa173 (patch)
treedb6a60a197a41d61f1cfc2943cfea131cbb82d69
parent3fb797308493b2fcd96a6f1ed04e16cb3011a2bc (diff)
downloadorg.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
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java12
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/export/GeneratePDOM.java8
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);
}

Back to the top