[286990] - ModelManagerImpl calls FileBufferModelManager.connect without checking for null
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
index 4dedc89..610f463 100644
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
+++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
@@ -506,12 +506,12 @@
_doCommonGetModel(file, id, sharedObject,rwType);
break;
} else if (sharedObject == testObject) {
- SYNC.release();
synchronized(sharedObject) {
if (sharedObject.theSharedModel!=null) {
_incrCount(sharedObject, rwType);
}
}
+ SYNC.release();
break;
} else {
// we got a different object than what we were expecting
@@ -1787,13 +1787,14 @@
Assert.isNotNull(sharedObject, "release was requested on a model that was not being managed"); //$NON-NLS-1$
sharedObject.waitForLoadAttempt();
-
+ SYNC.acquire();
synchronized(sharedObject) {
_decrCount(sharedObject, EDIT);
if ((sharedObject.referenceCountForRead == 0) && (sharedObject.referenceCountForEdit == 0)) {
discardModel(id, sharedObject);
}
}
+ SYNC.release();
// if edit goes to zero, but still open for read,
// then we should reload here, so we are in synch with
// contents on disk.
@@ -1902,12 +1903,14 @@
Assert.isNotNull(sharedObject, "release was requested on a model that was not being managed"); //$NON-NLS-1$
sharedObject.waitForLoadAttempt();
}
+ SYNC.acquire();
synchronized(sharedObject) {
_decrCount(sharedObject, READ);
if ((sharedObject.referenceCountForRead == 0) && (sharedObject.referenceCountForEdit == 0)) {
discardModel(id, sharedObject);
}
}
+ SYNC.release();
}
/**