Req #71995 [Ver->Csd]: Returning the same var twice from __sleep() produces broken serialized data

From: Date: Sat, 09 Apr 2016 17:02:37 +0000
Subject: Req #71995 [Ver->Csd]: Returning the same var twice from __sleep() produces broken serialized data
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-200459@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=71995&edit=1 ID: 71995 Updated by: laruence@php.net Reported by: jsnell at e-normous dot com Summary: Returning the same var twice from __sleep() produces broken serialized data -Status: Verified +Status: Closed Type: Feature/Change Request Package: Unknown/Other Function Operating System: Linux PHP Version: 7.0.5 Block user comment: N Private report: N New Comment: Automatic comment on behalf of laruence@gmail.com Revision: http://git.php.net/?p=php-src.git;a=commit;h=5db4d9a71c1510921f1d5514d1e1d4bf53200eae Log: Fixed bug #71995 (Returning the same var twice from __sleep() produces broken serialized data) Previous Comments: ------------------------------------------------------------------------ [2016-04-08 20:05:15] jsnell at e-normous dot com Description: ------------ If the same member variable is returned twice from __sleep() and that member variable is a reference, the serialized output errors when unserialized. This "worked" before PHP7 and the error during unserialization appears in PHP 7.0.3 and later. Test script: --------------- <?php class C { } class A { public $b; function __construct() { $this->b = new C(); } function __sleep() { return array("b", "b"); } } $a = new A(); var_dump(unserialize(serialize($a))); Expected result: ---------------- Notice: member variable "b" returned from __sleep() multiple times or alternately, silently ignore the duplication. Actual result: -------------- Notice: unserialize(): Error at offset 43 of 44 bytes in /in/0FNkge on line 6 bool(false) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=71995&edit=1

« previous php.bugs (#200459) next »