When unregistering all services for a bundle, verify each registration is
valid before unregistering, since it is possible that an event from a
subsequent unregister caused the unregistering of another service. (FELIX-952)


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@746289 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/ServiceRegistry.java b/framework/src/main/java/org/apache/felix/framework/ServiceRegistry.java
index 6bb1727..2d60732 100644
--- a/framework/src/main/java/org/apache/felix/framework/ServiceRegistry.java
+++ b/framework/src/main/java/org/apache/felix/framework/ServiceRegistry.java
@@ -141,7 +141,10 @@
         // Unregister each service.
         for (int i = 0; (regs != null) && (i < regs.length); i++)
         {
-            regs[i].unregister();
+            if (((ServiceRegistrationImpl) regs[i]).isValid())
+            {
+                regs[i].unregister();
+            }
         }
 
         // Now remove the bundle itself.