#40235 [Fbk->Csd]: serialize breaks with floats if locale is set to de_DE

From: Date: Thu, 25 Jan 2007 14:27:23 +0000
Subject: #40235 [Fbk->Csd]: serialize breaks with floats if locale is set to de_DE
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-108044@lists.php.net to get a copy of this message
ID: 40235 User updated by: tacker@php.net Reported By: tacker@php.net -Status: Feedback +Status: Closed Bug Type: Variables related Operating System: Gentoo Linux PHP Version: 5.2.1RC3 New Comment: Fixed in PHP 5.2.1RC4-dev (cli) (built: Jan 25 2007 14:49:12) Previous Comments: ------------------------------------------------------------------------ [2007-01-25 12:35:47] tony2001@php.net Please try using this CVS snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.2-win32-latest.zip ------------------------------------------------------------------------ [2007-01-25 12:34:31] tacker@php.net Description: ------------ If locale is set to de_DE serialized arrays and objects with floats somewhere cannot be unserialized. Reproduce code: --------------- <?php error_reporting(E_ALL); ini_set('display_errors', 1); echo 'Setting locale to ' . setlocale(LC_ALL, 'de_DE') . "\n"; // Remove this to make it work $array = array('myval' => 1.2345); echo 'Serializing '; var_export($array); echo "\n"; $serialized = serialize($array); echo 'Got: ' . $serialized . "\n"; echo "Unserializing.\n"; $unserialized = unserialize($serialized); echo 'Got: ' . var_export($unserialized, true) . "\n"; echo 'This should be true: ' . var_export(($unserialized === $array), true) . "\n"; ?> Expected result: ---------------- $ php locale_serialize.php Serializing array ( 'myval' => 1.2345, ) Got: a:1:{s:5:"myval";d:1.2344999999999999307220832633902318775653839111328125;} Unserializing. Got: array ( 'myval' => 1.2345, ) This should be true: true Actual result: -------------- $ php locale_serialize.php Setting locale to de_DE Serializing array ( 'myval' => 1,2345, ) Got: a:1:{s:5:"myval";d:1,2344999999999999307220832633902318775653839111328125;} Unserializing. Notice: unserialize(): Error at offset 17 of 75 bytes in /var/www/alan-live/htdoc/test/locale_serialize.php on line 16 Got: false This should be true: false ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=40235&edit=1

« previous php.bugs (#108044) next »