From 732910b3c9e3b860ad064eb559e943bd41d333cc Mon Sep 17 00:00:00 2001
From: Helmut Hummel <helmut.hummel@typo3.org>
Date: Sun, 12 Jul 2015 15:10:37 +0200
Subject: [PATCH] [BUGFIX] Ensure PageRenderer singleton is set

Before rendering _INT content objects, the page renderer is unserialized
and stored in a TypoScriptFrontendController property. However this new
object is not updated in the singleton store in GeneralUtility.

This leads to the situation that plugin code that (legally) just instantiate
the page renderer using GeneralUtility::makeInstance() receive the wrong object.

Make sure the singleton store is updated once the page renderer is unserialized
for _INT processing.

Releases: master, 6.2
Resolves: #68061
Change-Id: I162b8a4dc102ffd8cc0fcc4d21ccc271c861b187
Reviewed-on: http://review.typo3.org/41109
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Nicole Cordes <typo3@cordes.co>
Tested-by: Nicole Cordes <typo3@cordes.co>
---
 .../Controller/TypoScriptFrontendController.php      | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
index 61140cc62ee6..eb4e65e46eff 100644
--- a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
+++ b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
@@ -987,15 +987,6 @@ class TypoScriptFrontendController {
 		return $this->pageRenderer;
 	}
 
-	/**
-	 * This is needed for USER_INT processing
-	 *
-	 * @param PageRenderer $pageRenderer
-	 */
-	protected function setPageRenderer(PageRenderer $pageRenderer) {
-		$this->pageRenderer = $pageRenderer;
-	}
-
 	/********************************************
 	 *
 	 * Initializing, resolving page id
@@ -3394,7 +3385,8 @@ class TypoScriptFrontendController {
 		if (!empty($this->config['INTincScript_ext']['pageRenderer'])) {
 			/** @var PageRenderer $pageRenderer */
 			$pageRenderer = unserialize($this->config['INTincScript_ext']['pageRenderer']);
-			$this->setPageRenderer($pageRenderer);
+			$this->pageRenderer = $pageRenderer;
+			GeneralUtility::setSingletonInstance(PageRenderer::class, $pageRenderer);
 		}
 
 		$this->recursivelyReplaceIntPlaceholdersInContent();
-- 
GitLab