Skip to content

Commit 9e619ca

Browse files
committed
Fixed Issue #80 (Serialized failed on unseted value)
1 parent 1f84ada commit 9e619ca

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

msgpack_pack.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,7 @@ void msgpack_serialize_zval(smart_str *buf, zval *val, HashTable *var_hash) /* {
454454
}
455455

456456
switch (Z_TYPE_P(val_noref)) {
457+
case IS_UNDEF:
457458
case IS_NULL:
458459
msgpack_pack_nil(buf);
459460
break;

tests/issue080.phpt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
--TEST--
2+
Issue #80 (Serialized failed on unseted value)
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("msgpack")) {
6+
echo "skip";
7+
}
8+
--FILE--
9+
<?php
10+
11+
class MyClass
12+
{
13+
protected $field;
14+
15+
public function preSerialize()
16+
{
17+
unset($this->field);
18+
}
19+
}
20+
21+
$t = new MyClass();
22+
$t->preSerialize();
23+
var_dump(msgpack_unserialize(msgpack_serialize($t)));
24+
?>
25+
--EXPECTF--
26+
object(MyClass)#%d (1) {
27+
["field":protected]=>
28+
NULL
29+
}

0 commit comments

Comments
 (0)