Problem/Motivation

After updating from version 2.0.0-alpha4 to the stable 2.0.0 release the site crashed with following error:

Drupal version 10.2.8, PHP version 8.1

TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in count() (line 185 of modules/contrib/domain_menu_access/modules/domain_menu_access_menu_block/src/Plugin/Block/DomainMenuAccessMenuMenuBlock.php).
Drupal\domain_menu_access_menu_block\Plugin\Block\DomainMenuAccessMenuMenuBlock->build() (Line: 434)
Drupal\menu_block\Plugin\Block\MenuBlock->blockAccess(Object) (Line: 127)
Drupal\Core\Block\BlockBase->access(Object, 1) (Line: 124)
Drupal\block\BlockAccessControlHandler->checkAccess(Object, 'view', Object) (Line: 109)
Drupal\Core\Entity\EntityAccessControlHandler->access(Object, 'view', Object, 1) (Line: 329)
Drupal\Core\Entity\EntityBase->access('view', NULL, 1) (Line: 63)
Drupal\block\BlockRepository->getVisibleBlocksPerRegion(Array) (Line: 137)
Drupal\block\Plugin\DisplayVariant\BlockPageVariant->build() (Line: 270)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 128)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 186)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 28)
Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 32)
Drupal\big_pipe\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 36)
Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 144)
Drupal\cloudflare\CloudFlareMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 704)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

The code checks if there are menu items to render, and returns an error because the array #items does not exist.

Steps to reproduce

Update from version 2.0.0-alpha4 to version 2.0.0 and have a menu with no #items key in the render array of a menu.

Output of xdebug without adding of patch.

Proposed resolution

Check if the key #items is present, before checking if the items array contains more than zero items.

Remaining tasks

Review the code and merge MR.

User interface changes

None

API changes

None

Data model changes

None

CommentFileSizeAuthor
output-xdebug-without-patch-applyed.png198.92 KBdtfabio
Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

dtfabio created an issue. See original summary.

dtfabio’s picture

Assigned: dtfabio » Unassigned
Issue summary: View changes
Status: Active » Needs review
tim-diels’s picture

Status: Needs review » Reviewed & tested by the community

Hi Fabio, thanks for the report. Looks good to me.

  • tim-diels committed b0e32588 on 2.0.x authored by dtfabio
    Issue #3490472 by dtfabio, tim-diels: TypeError: count(): Argument #1 ($...
tim-diels’s picture

Status: Reviewed & tested by the community » Fixed
tim-diels’s picture

Status: Fixed » Closed (fixed)