diff -u b/core/modules/search/lib/Drupal/search/SearchPluginManager.php b/core/modules/search/lib/Drupal/search/SearchPluginManager.php --- b/core/modules/search/lib/Drupal/search/SearchPluginManager.php +++ b/core/modules/search/lib/Drupal/search/SearchPluginManager.php @@ -122,19 +122,28 @@ * {@inheritdoc} */ public function createInstance($plugin_id, array $configuration = array()) { - $stuff = $this->getConfiguration($plugin_id); - if (is_array($stuff)) { - $configuration = array_merge($configuration, $stuff); - } + $configuration = array_merge($configuration, $this->getConfiguration($plugin_id)); return $this->factory->createInstance($plugin_id, $configuration); } /** + * Gets plugin configuration stored in the configuration management system. + * * @param $plugin_id + * The id of the plugin to get configuration for. + * * @return array + * An array of plugin configuration. */ protected function getConfiguration($plugin_id) { - return $this->configFactory->get('search.plugin.' . $plugin_id)->get(); + $configuration = $this->configFactory->get('search.plugin.' . $plugin_id)->get(); + + // Ensure we return an array. If the plugin has no configuration this will + // be null. + if (!is_array($configuration)) { + $configuration = array(); + } + return $configuration; } }