diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php index 5041a78..376d0ff 100644 --- a/core/lib/Drupal/Core/Render/Renderer.php +++ b/core/lib/Drupal/Core/Render/Renderer.php @@ -806,10 +806,18 @@ public function mergeAttachments(array $a, array $b) { // correctly; adding the same settings multiple times needs to behave // idempotently. if (!empty($a['drupalSettings']) && !empty($b['drupalSettings'])) { - $a['drupalSettings'] = NestedArray::mergeDeepArray([$a['drupalSettings'], $b['drupalSettings']], TRUE); + $drupalSettings = NestedArray::mergeDeepArray(array($a['drupalSettings'], $b['drupalSettings']), TRUE); + // No need for re-merging them. + unset($a['drupalSettings']); unset($b['drupalSettings']); } - return NestedArray::mergeDeep($a, $b); + // Apply the normal merge. + $a = array_merge($a, $b); + if (isset($drupalSettings)) { + // Save the custom merge for the drupalSettings. + $a['drupalSettings'] = $drupalSettings; + } + return $a; } /**