diff --git a/eventadmin/impl/changelog.txt b/eventadmin/impl/changelog.txt
index fe49877..8b2eab7 100644
--- a/eventadmin/impl/changelog.txt
+++ b/eventadmin/impl/changelog.txt
@@ -2,6 +2,7 @@
 ---------------------------
 ** Bug
     * [FELIX-4617] - Empty configurations for ignore topic and ignore timeout lead to error messages in the log
+    * [FELIX-4618] - NPE if config value for ignore topic or timeout is empty
 
 
 Changes from 1.3.2 to 1.4.0
diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/handler/EventHandlerTracker.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/handler/EventHandlerTracker.java
index 077f32c..91f1eb0 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/handler/EventHandlerTracker.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/handler/EventHandlerTracker.java
@@ -18,6 +18,7 @@
  */
 package org.apache.felix.eventadmin.impl.handler;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
@@ -283,7 +284,7 @@
         }
         else
         {
-            matchers = new Matcher[config.length];
+            final List<Matcher> list = new ArrayList<EventHandlerTracker.Matcher>();
             for(int i=0;i<config.length;i++)
             {
                 String value = config[i];
@@ -295,7 +296,7 @@
                 {
                     if ( value.endsWith(".") )
                     {
-                        matchers[i] = new PackageMatcher(value.substring(0, value.length() - 1));
+                        list.add(new PackageMatcher(value.substring(0, value.length() - 1)));
                     }
                     else if ( value.endsWith("*") )
                     {
@@ -303,14 +304,22 @@
                         {
                             return new Matcher[] {new MatcherAll()};
                         }
-                        matchers[i] = new SubPackageMatcher(value.substring(0, value.length() - 1));
+                        list.add(new SubPackageMatcher(value.substring(0, value.length() - 1)));
                     }
                     else
                     {
-                        matchers[i] = new ClassMatcher(value);
+                        list.add(new ClassMatcher(value));
                     }
                 }
             }
+            if ( list.size() > 0 )
+            {
+                matchers = list.toArray(new Matcher[list.size()]);
+            }
+            else
+            {
+                matchers = null;
+            }
         }
         return matchers;
 	}
