diff options
-rw-r--r-- | bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRManager.java | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRManager.java b/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRManager.java index a6aa1461b..1536f536a 100644 --- a/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRManager.java +++ b/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRManager.java @@ -438,12 +438,15 @@ public class SCRManager implements ServiceListener, SynchronousBundleListener, C sc.setState(Component.STATE_UNSATISFIED); resolver.enableComponents(components); } else { - // we can just dispose this SCP - sc.componentProps.removeElement(scp); - Vector components = new Vector(); - components.addElement(scp); - resolver.disposeComponentConfigs(components, ComponentConstants.DEACTIVATION_REASON_CONFIGURATION_DELETED); - scp.setState(Component.STATE_DISPOSED); + // in case it has ever been constructed + if (scp != null) { + // we can just dispose this SCP + sc.componentProps.removeElement(scp); + Vector components = new Vector(); + components.addElement(scp); + resolver.disposeComponentConfigs(components, ComponentConstants.DEACTIVATION_REASON_CONFIGURATION_DELETED); + scp.setState(Component.STATE_DISPOSED); + } } } break; |