From 425c911e9ce7c5fe3f54e01997b1cc3420cda3e5 Mon Sep 17 00:00:00 2001
From: Georg Ringer <georg.ringer@gmail.com>
Date: Sat, 15 Feb 2020 13:50:50 +0100
Subject: [PATCH] [BUGFIX] Use multibyte method in CodeCompletionController

Use mb_strlen & mb_substr to cut off TypoScript to avoid exceptions
if the 20th character is a multibyte value.

Resolves: #90372
Releases: master, 9.5
Change-Id: I8f90aa54a4cb6ede95d4fa50d557aeec4d8cd031
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/63255
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
---
 .../t3editor/Classes/Controller/CodeCompletionController.php  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/typo3/sysext/t3editor/Classes/Controller/CodeCompletionController.php b/typo3/sysext/t3editor/Classes/Controller/CodeCompletionController.php
index 43f329aba46e..c1e1b6e0a47a 100644
--- a/typo3/sysext/t3editor/Classes/Controller/CodeCompletionController.php
+++ b/typo3/sysext/t3editor/Classes/Controller/CodeCompletionController.php
@@ -90,8 +90,8 @@ class CodeCompletionController
             //type definition or value-assignment
             if ($dotCount === 0) {
                 if ($value != '') {
-                    if (strlen($value) > 20) {
-                        $value = substr($value, 0, 20);
+                    if (mb_strlen($value) > 20) {
+                        $value = mb_substr($value, 0, 20);
                     }
                     if (!isset($cleanedTreeBranch[$key])) {
                         $cleanedTreeBranch[$key] = [];
-- 
GitLab