1--TEST--
2PHPC-1006: Do not modify memory of Persistable::bsonSerialize() return value
3--FILE--
4<?php
5
6require_once __DIR__ . '/../utils/tools.php';
7
8class MyClass implements MongoDB\BSON\Persistable
9{
10    public $data;
11
12    public function __construct()
13    {
14        $this->data = [
15            '__pclass' => 'baz',
16            'foo' => 'bar',
17        ];
18    }
19
20    function bsonSerialize()
21    {
22        return $this->data;
23    }
24
25    function bsonUnserialize(array $data)
26    {
27    }
28}
29
30$obj = new MyClass;
31var_dump($obj->data);
32hex_dump(fromPHP($obj));
33var_dump($obj->data);
34
35?>
36===DONE===
37<?php exit(0); ?>
38--EXPECT--
39array(2) {
40  ["__pclass"]=>
41  string(3) "baz"
42  ["foo"]=>
43  string(3) "bar"
44}
45     0 : 28 00 00 00 05 5f 5f 70 63 6c 61 73 73 00 07 00  [(....__pclass...]
46    10 : 00 00 80 4d 79 43 6c 61 73 73 02 66 6f 6f 00 04  [...MyClass.foo..]
47    20 : 00 00 00 62 61 72 00 00                          [...bar..]
48array(2) {
49  ["__pclass"]=>
50  string(3) "baz"
51  ["foo"]=>
52  string(3) "bar"
53}
54===DONE===
55