[TYPO3-core] RFC #11876: stripSlashesOnArray creates references where you want copies
Ernesto Baschny [cron IT]
ernst at cron-it.de
Fri Sep 4 15:14:17 CEST 2009
Hi,
this is a SVN patch request.
Type: Bugfix
Branches: TYPO3_4-2, trunk
BT reference: http://bugs.typo3.org/view.php?id=11876
Problem:
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.
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.
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.
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.
How to reproduce:
Since this is pretty difficult to test, attached to the bug tracker 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 #6037):
http://forge.typo3.org/repositories/revision/typo3v4-core/3216 [^]
So it was first included in 4.2.0beta2.
Cheers,
Ernesto
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 11876.diff
Url: http://lists.netfielders.de/pipermail/typo3-team-core/attachments/20090904/196679db/attachment.txt
More information about the TYPO3-team-core
mailing list