Code cleanup.
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptorProvider.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptorProvider.java
index e394477..f1d8ca5 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptorProvider.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptorProvider.java
@@ -34,11 +34,17 @@
private ProtoDescriptor descriptor;
- public synchronized ProtoDescriptor get() {
- IProtoDescriptorSource actualSource = sourceFromPlugin();
- if (actualSource == null) actualSource = source;
- if (descriptor == null) descriptor = new ProtoDescriptor(parser, actualSource, nodes);
- return descriptor;
+ private final Object lock = new Object();
+
+ public ProtoDescriptor get() {
+ synchronized (lock) {
+ if (descriptor == null) {
+ IProtoDescriptorSource actualSource = sourceFromPlugin();
+ if (actualSource == null) actualSource = source;
+ descriptor = new ProtoDescriptor(parser, actualSource, nodes);
+ }
+ return descriptor;
+ }
}
private IProtoDescriptorSource sourceFromPlugin() {