diff --git a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/FilterImpl.java b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/FilterImpl.java
index 7609a30..c99ef76 100644
--- a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/FilterImpl.java
+++ b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/FilterImpl.java
@@ -350,7 +350,7 @@
                         }
                     }
                 }
-                else if (numClass.isArray())
+                else if (numClass != null && numClass.isArray())
                 {
                     int len = Array.getLength(obj);
                     for (int i = 0; i < len; i++)
@@ -425,6 +425,7 @@
             }
             catch (Exception e)
             {
+                e.printStackTrace();
             }
             return false;
         }
@@ -660,4 +661,4 @@
             return false;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/StringSet.java b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/StringSet.java
index 1ce521b..b23fd07 100644
--- a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/StringSet.java
+++ b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/StringSet.java
@@ -26,10 +26,13 @@
 
     public StringSet(String set)
     {
-        StringTokenizer st = new StringTokenizer(set, ",");
-        while (st.hasMoreTokens())
+        if (set != null)
         {
-            add(st.nextToken().trim());
+            StringTokenizer st = new StringTokenizer(set, ",");
+            while (st.hasMoreTokens())
+            {
+                add(st.nextToken().trim());
+            }
         }
     }
 }
\ No newline at end of file
diff --git a/bundlerepository/src/test/java/org/apache/felix/bundlerepository/FilterImplTest.java b/bundlerepository/src/test/java/org/apache/felix/bundlerepository/FilterImplTest.java
index 2d93530..53d9679 100644
--- a/bundlerepository/src/test/java/org/apache/felix/bundlerepository/FilterImplTest.java
+++ b/bundlerepository/src/test/java/org/apache/felix/bundlerepository/FilterImplTest.java
@@ -70,7 +70,7 @@
         dict.put("package", "org.eclipse.core.runtime");
         dict.put("version", "0.0.0");
         dict.put("common", "split");
-        assertFalse(filterImpl.match(dict));
+        assertTrue(filterImpl.match(dict));
 
         filterImpl = new FilterImpl("(&(package=org.eclipse.core.runtime)(version>=0.0.0)(common=split)(mandatory:*>common))");
         dict = new Hashtable();
@@ -116,5 +116,4 @@
         assertFalse(filterImpl.matchCase(dict));
         
     }
-    
-}
+}
\ No newline at end of file
