diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php b/core/modules/views/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
index bc99b02..83dfe20 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
@@ -878,7 +878,7 @@ public function &getHandler($type, $id) {
    *
    * @return \Drupal\views\Plugin\views\HandlerBase[]
    */
-  public function getHandlers($type) {
+  public function &getHandlers($type) {
     if (!isset($this->handlers[$type])) {
       $this->handlers[$type] = array();
       $types = ViewExecutable::viewsHandlerTypes();
diff --git a/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php
index 2fae9d3..f1ae8b6 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaTest.php
@@ -22,7 +22,7 @@ class AreaTest extends HandlerTestBase {
    *
    * @var array
    */
-  public static $testViews = array('test_example_area');
+  public static $testViews = array('test_example_area', 'test_example_area_access');
 
   /**
    * Modules to enable.
@@ -120,6 +120,19 @@ public function testRenderArea() {
   }
 
   /**
+   * Tests the access for an area.
+   */
+  public function testAreaAccess() {
+    $view = Views::getView('test_example_area_access');
+    $view->initHandlers();
+
+    $output = $view->preview();
+    $output = drupal_render($output);
+    // The area output should not be present since access was denied.
+    $this->assertFalse(strpos($output, 'a custom string') !== FALSE);
+  }
+
+  /**
    * Tests global tokens.
    */
   public function testRenderAreaToken() {
diff --git a/core/modules/views/lib/Drupal/views/ViewExecutable.php b/core/modules/views/lib/Drupal/views/ViewExecutable.php
index 3761ed8..44aabe8 100644
--- a/core/modules/views/lib/Drupal/views/ViewExecutable.php
+++ b/core/modules/views/lib/Drupal/views/ViewExecutable.php
@@ -896,7 +896,7 @@ protected function _postExecute() {
    */
   protected function _initHandler($key, $info) {
     // Load the requested items from the display onto the object.
-    $this->$key = $this->display_handler->getHandlers($key);
+    $this->$key = &$this->display_handler->getHandlers($key);
 
     // This reference deals with difficult PHP indirection.
     $handlers = &$this->$key;
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_example_area_access.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_example_area_access.yml
new file mode 100644
index 0000000..b4c3a68
--- /dev/null
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_example_area_access.yml
@@ -0,0 +1,27 @@
+base_table: node
+core: '8'
+description: ''
+status: '1'
+display:
+  default:
+    display_options:
+      access:
+        type: none
+      cache:
+        type: none
+      empty:
+        test_example:
+          field: test_example
+          id: test_example
+          table: views
+          plugin_id: test_example
+          provider: views_test_data
+          custom_access: false
+          string: 'a custom string'
+    display_plugin: default
+    display_title: Master
+    id: default
+    position: 0
+label: {  }
+id: test_example_area_access
+tag: ''
diff --git a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/area/TestExample.php b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/area/TestExample.php
index f9da30e..9ec2bd6 100644
--- a/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/area/TestExample.php
+++ b/core/modules/views/tests/modules/views_test_data/lib/Drupal/views_test_data/Plugin/views/area/TestExample.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\views_test_data\Plugin\views\area;
 
+use Drupal\Core\Session\AccountInterface;
 use Drupal\views\Plugin\views\area\AreaPluginBase;
 
 /**
@@ -19,11 +20,19 @@
 class TestExample extends AreaPluginBase {
 
   /**
+   * {@inheritdoc}
+   */
+  public function access(AccountInterface $account) {
+    return $this->options['custom_access'];
+  }
+
+  /**
    * Overrides Drupal\views\Plugin\views\area\AreaPluginBase::option_definition().
    */
   public function defineOptions() {
     $options = parent::defineOptions();
     $options['string'] = array('default' => '');
+    $options['custom_access'] = array('default' => TRUE, 'bool' => TRUE);
 
     return $options;
   }
