Bug #20995
closedstripSlashesOnArray creates references where you want copies
0%
Description
In newer TYPO3 versions the class t3lib_div::stripSlashesOnArray has been optimized for performance, using a foreach loop where it used to be a while loop. The new version works on references instead of copying the array.
Problem:
After calling this function on a normal array, the array itself contains only references to the values it contained before. This ist quite ugly, cause you can't work on a copy without changing the original data any more.
Proposed Solution:
If you unset the reference at the end of foreach, you can go on using the array as before. This is recommended to do by the php.net documentation (in a big red "Warning" box) when using references in a "foreach" loop.
Issue might arise on any extension that makes use of t3lib_div::_GP. Bug was first noticed when trying to save mm-table-relations using sr_feuser_register:
here:
function parseOutgoingData($origArr = array()) {
(...)
$parsedArr = $origArr;
$parsedArr is a COPY of our $this->dataArr, but it will modify the values from the original dataArr.
Since this is pretty difficult to test, attached is a very simple plugin which can be added to a page and it will explain and demonstrate the bug in "action".
Trouble was introduced in rev.3216 (feature #16375):
http://forge.typo3.org/repositories/revision/typo3v4-core/3216
So it was first included in 4.2.0beta2.
(issue imported from #M11876)
Files