MDL-67316 typo3: Pass correct hex chars to hexdec()
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Wed, 20 Nov 2019 14:17:40 +0000 (15:17 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Fri, 24 Apr 2020 13:56:38 +0000 (15:56 +0200)
Typo3 was relaying on the feature of base converter
functions silently removing invalid chars so, for example:

'U+00A0' => '00A0' => 160

Since php74, the existence of those invalid chars do produce
a deprecation warning, no matter the outcome continues being the same.

So, here, we are just converting that invalud 'U+' by '0x'

lib/typo3/class.t3lib_cs.php
lib/typo3/readme_moodle.txt

index ad1a640..d22acf6 100644 (file)
@@ -1313,12 +1313,12 @@ class t3lib_cs {
                                        array_push($code_decomp, chr($ord));
                                }
                        }
-                       $ascii[$this->UnumberToChar(hexdec($from))] = join('', $code_decomp);
+                       $ascii[$this->UnumberToChar(hexdec(str_replace('U+', '0x', $from)))] = join('', $code_decomp);
                }
 
                        // add numeric decompositions
                foreach ($number as $from => $to) {
-                       $utf8_char = $this->UnumberToChar(hexdec($from));
+                       $utf8_char = $this->UnumberToChar(hexdec(str_replace('U+', '0x', $from)));
                        if (!isset($ascii[$utf8_char])) {
                                $ascii[$utf8_char] = $to;
                        }
index ad6bf1c..2b61f1c 100644 (file)
@@ -10,6 +10,13 @@ Procedure:
 
 Local changes (to verify/apply with new imports):
 
+- MDL-67316: PHP 7.4 compatibility. Wrong chars in hexdec() operations.
+    Ensure that all the calls to hexdec() are passing exclusively
+    correct hex chars. Before php74 they were silently discarded but
+    with php74 a deprecation warning is produced. We haven't looked how
+    this is fixed upstream because plans include to remove this
+    library from core (see MDL-65809)
+
 - MDL-67017: PHP 7.4 compatibility. Curly brackets.
     Remove all the deprecated curly bracket uses {} to access to strings/arrays
     by key. We haven't looked how this is fixed upstream because plans include