From:             [EMAIL PROTECTED]
Operating system: N/A
PHP version:      5CVS-2004-08-27 (dev)
PHP Bug Type:     Strings related
Bug description:  serialize produces invalid output

Description:
------------
Using serialize() with a class produces invalid output.

Reproduce code:
---------------
I haven't had a chance to properly investigate why this particular code
causes a problem, but Derick seemed ontop of it already.

<?php
class cr {
   private $priv_member;
   function cr($val)
   {
       $this->priv_member = $val;
   }

   function comp_func_cr($a, $b)
   {
       if ($a->priv_member === $b->priv_member) return 0;
       return ($a->priv_member > $b->priv_member)? 1:-1;
   }
   
   function comp_func_key($a, $b)
   {
       if ($a === $b) return 0;
       return ($a > $b)? 1:-1;
   }
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=>
new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=>
new cr(4), 2 => new cr(-15),);

$result = array_udiff_uassoc($a, $b, array("cr", "comp_func_cr"),
array("cr", "comp_func_key"));
$foo = serialize($result);
echo $foo;
?>

Actual result:
--------------
0000  61 3a 33 3a 7b 73 3a 33  3a 22 30 2e 31 22 3b 4f   a:3:{s:3
:"0.1";O
0010  3a 32 3a 22 63 72 22 3a  31 3a 7b 73 3a 31 35 3a   :2:"cr":
1:{s:15:
0020  22 00 63 72 00 70 72 69  76 5f 6d 65 6d 62 65 72   ".cr.pri
v_member
0030  22 3b 69 3a 39 3b 7d 73  3a 33 3a 22 30 2e 35 22   ";i:9;}s
:3:"0.5"
0040  3b 4f 3a 32 3a 22 63 72  22 3a 31 3a 7b 73 3a 31   ;O:2:"cr
":1:{s:1
0050  35 3a 22 00 63 72 00 70  72 69 76 5f 6d 65 6d 62   5:".cr.p
riv_memb
0060  65 72 22 3b 69 3a 31 32  3b 7d 69 3a 30 3b 4f 3a   er";i:12
;}i:0;O:
0070  32 3a 22 63 72 22 3a 31  3a 7b 73 3a 31 35 3a 22   2:"cr":1
:{s:15:"
0080  00 63 72 00 70 72 69 76  5f 6d 65 6d 62 65 72 22   .cr.priv
_member"
0090  3b 69 3a 32 33 3b 7d 7d                            ;i:23;}}

As you can see from this hexdump, there are 0 bytes being produced. This
should not happen.

-- 
Edit bug report at http://bugs.php.net/?id=29865&edit=1
-- 
Try a CVS snapshot (php4):   http://bugs.php.net/fix.php?id=29865&r=trysnapshot4
Try a CVS snapshot (php5.0): http://bugs.php.net/fix.php?id=29865&r=trysnapshot50
Try a CVS snapshot (php5.1): http://bugs.php.net/fix.php?id=29865&r=trysnapshot51
Fixed in CVS:                http://bugs.php.net/fix.php?id=29865&r=fixedcvs
Fixed in release:            http://bugs.php.net/fix.php?id=29865&r=alreadyfixed
Need backtrace:              http://bugs.php.net/fix.php?id=29865&r=needtrace
Need Reproduce Script:       http://bugs.php.net/fix.php?id=29865&r=needscript
Try newer version:           http://bugs.php.net/fix.php?id=29865&r=oldversion
Not developer issue:         http://bugs.php.net/fix.php?id=29865&r=support
Expected behavior:           http://bugs.php.net/fix.php?id=29865&r=notwrong
Not enough info:             http://bugs.php.net/fix.php?id=29865&r=notenoughinfo
Submitted twice:             http://bugs.php.net/fix.php?id=29865&r=submittedtwice
register_globals:            http://bugs.php.net/fix.php?id=29865&r=globals
PHP 3 support discontinued:  http://bugs.php.net/fix.php?id=29865&r=php3
Daylight Savings:            http://bugs.php.net/fix.php?id=29865&r=dst
IIS Stability:               http://bugs.php.net/fix.php?id=29865&r=isapi
Install GNU Sed:             http://bugs.php.net/fix.php?id=29865&r=gnused
Floating point limitations:  http://bugs.php.net/fix.php?id=29865&r=float

Reply via email to