diff --git a/features.drush.inc b/features.drush.inc
index a04d640..9ae0476 100644
--- a/features.drush.inc
+++ b/features.drush.inc
@@ -249,7 +249,7 @@ function _drush_features_component_filter($all_components, $patterns = array(),
   // First filter on exported state.
   foreach ($all_components as $source => $components) {
     foreach ($components as $name => $title) {
-      $exported = sizeof($components_map[$source][$name]) > 0;
+      $exported = isset($components_map[$source][$name]) && sizeof($components_map[$source][$name]) > 0;
       if ($exported) {
         if ($options['exported']) {
           $pool[$source][$name] = $title;
@@ -277,7 +277,7 @@ function _drush_features_component_filter($all_components, $patterns = array(),
     // Rewrite * to %. Let users use both as wildcard.
     $pattern = strtr($pattern, array('*' => '%'));
     $sources = array();
-    list($source_pattern, $component_pattern) = explode(':', $pattern, 2);
+    @list($source_pattern, $component_pattern) = explode(':', $pattern, 2);
     // If source is empty, use a pattern.
     if ($source_pattern == '') {
       $source_pattern = '%';
@@ -342,7 +342,7 @@ function _drush_features_component_filter($all_components, $patterns = array(),
             return drush_set_error('', dt('Ambiguous component "!component", matches !matches', array('!component' => $component_pattern, '!matches' => join(', ', $matches))));
           }
         }
-        if (!is_array($selected[$source])) {
+        if (! isset($selected[$source]) || !is_array($selected[$source])) {
           $selected[$source] = array();
         }
         $selected[$source] += array_intersect_key($pool[$source], array_flip($matches));
@@ -363,7 +363,7 @@ function _drush_features_component_filter($all_components, $patterns = array(),
   if ($options['provided by'] && $options['exported'] ) {
     foreach ($selected as $source => $components) {
       foreach ($components as $name => $title) {
-        $exported = sizeof($components_map[$source][$name]) > 0;
+        $exported = isset($components_map[$source][$name]) && sizeof($components_map[$source][$name]) > 0;
         if ($exported) {
           $provided_by[$source . ':' . $name] = join(', ', $components_map[$source][$name]);
         }
