diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php index 5e1b8d1b8dd17d00cece3f958dbb022fb0ce075f..1c36184430338b7f5ff6d755d127aba2673392a0 100644 --- a/core/lib/Drupal/Core/Render/Renderer.php +++ b/core/lib/Drupal/Core/Render/Renderer.php @@ -380,7 +380,7 @@ protected function doRender(&$elements, $is_root_call = FALSE) { } // All render elements support #markup and #plain_text. - if (!empty($elements['#markup']) || !empty($elements['#plain_text'])) { + if (isset($elements['#markup']) || isset($elements['#plain_text'])) { $elements = $this->ensureMarkupIsSafe($elements); } @@ -744,11 +744,7 @@ protected function xssFilterAdminIfUnsafe($string) { * @see \Drupal\Component\Utility\Xss::filterAdmin() */ protected function ensureMarkupIsSafe(array $elements) { - if (empty($elements['#markup']) && empty($elements['#plain_text'])) { - return $elements; - } - - if (!empty($elements['#plain_text'])) { + if (isset($elements['#plain_text'])) { $elements['#markup'] = Markup::create(Html::escape($elements['#plain_text'])); } elseif (!($elements['#markup'] instanceof MarkupInterface)) { diff --git a/core/tests/Drupal/Tests/Core/Render/RendererTest.php b/core/tests/Drupal/Tests/Core/Render/RendererTest.php index adfc890cb08a21e0e229c3c55c81fd99a5179730..54037c57e9c47e26e2c1d14845e9efc736b17de9 100644 --- a/core/tests/Drupal/Tests/Core/Render/RendererTest.php +++ b/core/tests/Drupal/Tests/Core/Render/RendererTest.php @@ -89,6 +89,26 @@ public function providerTestRenderBasic() { ['#markup' => 'foo'], 'foo', ]; + // Basic #markup based renderable array with value '0'. + $data[] = [ + ['#markup' => '0'], + '0', + ]; + // Basic #markup based renderable array with value 0. + $data[] = [ + ['#markup' => 0], + '0', + ]; + // Basic #markup based renderable array with value ''. + $data[] = [ + ['#markup' => ''], + '', + ]; + // Basic #markup based renderable array with value NULL. + $data[] = [ + ['#markup' => NULL], + '', + ]; // Basic #plain_text based renderable array. $data[] = [ ['#plain_text' => 'foo'], @@ -104,6 +124,26 @@ public function providerTestRenderBasic() { ['#plain_text' => Markup::create('<em>foo</em>')], '<em>foo</em>', ]; + // #plain_text based renderable array with value '0'. + $data[] = [ + ['#plain_text' => '0'], + '0', + ]; + // #plain_text based renderable array with value 0. + $data[] = [ + ['#plain_text' => 0], + '0', + ]; + // #plain_text based renderable array with value ''. + $data[] = [ + ['#plain_text' => ''], + '', + ]; + // #plain_text based renderable array with value NULL. + $data[] = [ + ['#plain_text' => NULL], + '', + ]; // Renderable child element. $data[] = [ ['child' => ['#markup' => 'bar']],