[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