Bug #55801 [Fbk->Asn]: Behavior of unserialize has changed
| From: | johannes@php.net | Date: | Sat, 01 Oct 2011 13:58:26 +0000 |
| Subject: | Bug #55801 [Fbk->Asn]: Behavior of unserialize has changed | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-164017@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=55801&edit=1
ID: 55801
Updated by: johannes@php.net
Reported by: mapi at pdepend dot org
Summary: Behavior of unserialize has changed
-Status: Feedback
+Status: Assigned
Type: Bug
Package: Variables related
Operating System: Linux (Fedora 15)
PHP Version: 5.4.0beta1
-Assigned To:
+Assigned To: mike
Block user comment: N
Private report: N
New Comment:
mike, seems like you broke this. Please take a look.
Previous Comments:
------------------------------------------------------------------------
[2011-10-01 12:25:51] mapi at pdepend dot org
Bingo!
With revision 299770 this bug occurs the first time. If I checkout and compile
revision 299769 of trunk, everything works as expected. With revision 299770 I
get those annoying unserialized arrays with NULL values.
------------------------------------------------------------------------
[2011-09-30 16:09:44] johannes@php.net
Can you try reverting SVN revision r299770 and then run your test? - That's mostly a guess,
though.
bug #36424
http://svn.php.net/viewvc/?view=revision&revision=299770
------------------------------------------------------------------------
[2011-09-28 16:29:50] mapi at pdepend dot org
It seems that this has something todo with the visibility of properties that
should be serialized. If I do the following:
~ $ rm -rf ~/.pdepend
~ $ git clone https://github.com/pdepend/pdepend.git
~ $ cd pdepend
~ $ vim src/main/php/PHP/Depend/Code/AbstractClassOrInterface.php +86
-> Change from PROTECTED to PUBLIC
protected $parentClassReference = null; -> public $parentClassReference =
null;
~ $ vim src/main/php/PHP/Depend/Code/AbstractClassOrInterface.php +132
-> Change from PROTECTED to PUBLIC
protected $nodes = array(); -> public $nodes = array();
~ $ php540 src/bin/pdepend.php --summary-xml=sum.xml
src/main/php/PHP/Depend/Code/ASTArrayType.php
~ $ php540 src/bin/pdepend.php --summary-xml=sum.xml
src/main/php/PHP/Depend/Code/ASTArrayType.php
...
Executing CyclomaticComplexity-Analyzer:
Fatal error: Call to a member function findChildrenOfType() on a non-object in
/tmp/pdepend/src/main/php/PHP/Depend/Code/AbstractClassOrInterface.php on line
268
If I now revert the visibility of both properties from PUBLIC to PROTECTED, it
works:
~ $ vim src/main/php/PHP/Depend/Code/AbstractClassOrInterface.php +86
-> Change from PUBLIC to PROTECTED
public $parentClassReference = null; -> protected $parentClassReference =
null;
~ $ vim src/main/php/PHP/Depend/Code/AbstractClassOrInterface.php +132
-> Change from PUBLIC to PROTECTED
public $nodes = array(); -> protected $nodes = array();
~ $ php540 src/bin/pdepend.php --summary-xml=sum.xml
src/main/php/PHP/Depend/Code/ASTArrayType.php
This means that a PUBLIC property that was serialized can be restored in a
PROTECTED property while unserializing the object structure.
------------------------------------------------------------------------
[2011-09-28 15:20:33] mapi at pdepend dot org
Yes, here you can get the two serialized object structures:
http://manuel-pichler.de/stuff/5.3.ser
http://manuel-pichler.de/stuff/5.4.ser
And there is the difference:
5.3 -> *nodes";a:1:{i:0;r:18;}}}}}}}}}
5.4 -> *nodes";a:1:{i:0;r:36;}}}}}}}}}
It references something different.
------------------------------------------------------------------------
[2011-09-28 13:41:54] pajoye@php.net
Any chance to get something that shows us the serialized data with 5.4 and 5.4 so
we can see how they differ?
Maybe upload the small possible code somewhere?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=55801
--
Edit this bug report at https://bugs.php.net/bug.php?id=55801&edit=1