Skip to content

Commit 87efc1b

Browse files
committed
PHPC-1230: Allow cloning Undefined objects
1 parent 847a02f commit 87efc1b

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/BSON/Undefined.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ void php_phongo_undefined_init_ce(INIT_FUNC_ARGS) /* {{{ */
148148
zend_class_implements(php_phongo_undefined_ce TSRMLS_CC, 1, zend_ce_serializable);
149149

150150
memcpy(&php_phongo_handler_undefined, phongo_get_std_object_handlers(), sizeof(zend_object_handlers));
151+
/* Re-assign default handler previously removed in php_phongo.c */
152+
php_phongo_handler_undefined.clone_obj = zend_objects_clone_obj;
151153
#if PHP_VERSION_ID >= 70000
152154
php_phongo_handler_undefined.free_obj = php_phongo_undefined_free_object;
153155
php_phongo_handler_undefined.offset = XtOffsetOf(php_phongo_undefined_t, std);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
--TEST--
2+
MongoDB\BSON\Undefined can be cloned
3+
--FILE--
4+
<?php
5+
6+
require_once __DIR__ . '/../utils/tools.php';
7+
8+
$test = MongoDB\BSON\toPHP(MongoDB\BSON\fromJSON('{ "undefined": {"$undefined": true} }'));
9+
10+
$undefined = $test->undefined;
11+
12+
$clone = clone $undefined;
13+
14+
var_dump($clone == $undefined);
15+
var_dump($clone === $undefined);
16+
?>
17+
===DONE===
18+
<?php exit(0); ?>
19+
--EXPECT--
20+
bool(true)
21+
bool(false)
22+
===DONE===

0 commit comments

Comments
 (0)