From 081af8711904e294fa943901969669f52251dabd Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Tue, 7 May 2013 17:16:03 +0100
Subject: [PATCH] Issue #1987344 by tim.plunkett: NotFoundHttpException thrown
 in ParamConverterManager results in a WSOD.

---
 core/includes/menu.inc                            | 15 +++++++++++----
 .../Drupal/views/Tests/UI/DefaultViewsTest.php    |  4 ++++
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index dbe23897a869..ccf703ece396 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -5,13 +5,13 @@
  * API for the Drupal menu system.
  */
 
-use Symfony\Component\HttpFoundation\Request;
-
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Template\Attribute;
 use Drupal\menu_link\Plugin\Core\Entity\MenuLink;
 use Drupal\menu_link\MenuLinkStorageController;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 
 /**
  * @defgroup menu Menu system
@@ -771,8 +771,15 @@ function _menu_translate(&$router_item, $map, $to_arg = FALSE) {
     $route = $route_provider->getRouteByName($router_item['route_name']);
     $request = Request::create('/' . $router_item['href']);
     $request->attributes->set('system_path', $router_item['href']);
-    $request->attributes->add(Drupal::service('router')->matchRequest($request));
-    $router_item['access'] = Drupal::service('access_manager')->check($route, $request);
+    // Attempt to match this path to provide a fully built request to the
+    // acccess checker.
+    try {
+      $request->attributes->add(Drupal::service('router')->matchRequest($request));
+      $router_item['access'] = Drupal::service('access_manager')->check($route, $request);
+    }
+    catch (NotFoundHttpException $e) {
+      $router_item['access'] = FALSE;
+    }
   }
   else {
     // @todo: Remove once all routes are converted.
diff --git a/core/modules/views/lib/Drupal/views/Tests/UI/DefaultViewsTest.php b/core/modules/views/lib/Drupal/views/Tests/UI/DefaultViewsTest.php
index 6597d96db709..e401abf8433e 100644
--- a/core/modules/views/lib/Drupal/views/Tests/UI/DefaultViewsTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/UI/DefaultViewsTest.php
@@ -120,6 +120,10 @@ function testDefaultViews() {
     // Ensure the view is no longer listed.
     $this->assertUrl('admin/structure/views');
     $this->assertNoLinkByHref($edit_href);
+    // Ensure the view is no longer available.
+    $this->drupalGet($edit_href);
+    $this->assertResponse(404);
+    $this->assertText('Page not found');
   }
 
   /**
-- 
GitLab