From f08a96ea683883ed0a81ae7e8f1b1bc72edca6a6 Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Sun, 23 Oct 2016 13:40:40 -0700
Subject: [PATCH] Issue #2819593 by dawehner, webflo: Link title double
 escaping in Link::preRenderLink

---
 core/lib/Drupal/Core/Render/Element/Link.php                    | 2 +-
 core/modules/system/src/Tests/Theme/EngineTwigTest.php          | 2 ++
 .../templates/twig_theme_test.link_generator.html.twig          | 2 ++
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/core/lib/Drupal/Core/Render/Element/Link.php b/core/lib/Drupal/Core/Render/Element/Link.php
index 535d9bb51b9b..3888c7938d04 100644
--- a/core/lib/Drupal/Core/Render/Element/Link.php
+++ b/core/lib/Drupal/Core/Render/Element/Link.php
@@ -92,7 +92,7 @@ public static function preRenderLink($element) {
       /** @var \Drupal\Core\Utility\LinkGenerator $link_generator */
       $link_generator = \Drupal::service('link_generator');
       $generated_link = $link_generator->generate($element['#title'], $element['#url']->setOptions($options));
-      $element['#markup'] = $generated_link->getGeneratedLink();
+      $element['#markup'] = $generated_link;
       $generated_link->merge(BubbleableMetadata::createFromRenderArray($element))
         ->applyTo($element);
     }
diff --git a/core/modules/system/src/Tests/Theme/EngineTwigTest.php b/core/modules/system/src/Tests/Theme/EngineTwigTest.php
index a79c01dd6302..51d092d44b11 100644
--- a/core/modules/system/src/Tests/Theme/EngineTwigTest.php
+++ b/core/modules/system/src/Tests/Theme/EngineTwigTest.php
@@ -77,6 +77,7 @@ public function testTwigLinkGenerator() {
     $link_generator = $this->container->get('link_generator');
 
 
+    $generated_url = Url::fromRoute('user.register', [], ['absolute' => TRUE])->toString(TRUE)->getGeneratedUrl();
     $expected = [
       'link via the linkgenerator: ' . $link_generator->generate('register', new Url('user.register', [], ['absolute' => TRUE])),
       'link via the linkgenerator: ' . $link_generator->generate('register', new Url('user.register', [], ['absolute' => TRUE, 'attributes' => ['foo' => 'bar']])),
@@ -84,6 +85,7 @@ public function testTwigLinkGenerator() {
       'link via the linkgenerator: ' . $link_generator->generate('register', new Url('user.register', [], ['attributes' => ['id' => 'kitten']])),
       'link via the linkgenerator: ' . $link_generator->generate('register', new Url('user.register', [], ['attributes' => ['class' => ['llama', 'kitten', 'panda']]])),
       'link via the linkgenerator: ' . $link_generator->generate(Markup::create('<span>register</span>'), new Url('user.register', [], ['absolute' => TRUE])),
+      'link via the linkgenerator: <a href="' . $generated_url . '"><span>register</span><svg></svg></a>',
     ];
 
     // Verify that link() has the ability to bubble cacheability metadata:
diff --git a/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.link_generator.html.twig b/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.link_generator.html.twig
index 5d20ce22b902..a836aec93c61 100644
--- a/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.link_generator.html.twig
+++ b/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.link_generator.html.twig
@@ -5,3 +5,5 @@
 <div>link via the linkgenerator: {{ link('register', 'route:user.register', attributes) }}</div>
 {% set title %}<span>register</span>{% endset %}
 <div>link via the linkgenerator: {{ link(title, test_url) }}</div>
+{% set title %}<span>register</span><svg></svg>{% endset %}
+<div>link via the linkgenerator: {{ link(title, test_url) }}</div>
-- 
GitLab