diff --git a/src/BSON/Javascript.c b/src/BSON/Javascript.c index 949ccca33..2be421fa3 100644 --- a/src/BSON/Javascript.c +++ b/src/BSON/Javascript.c @@ -330,6 +330,11 @@ HashTable *php_phongo_javascript_get_properties(zval *object TSRMLS_DC) /* {{{ * } zval_ptr_dtor(&state.zchild); + } else { + zval scope; + + ZVAL_NULL(&scope); + zend_hash_str_update(props, "scope", sizeof("scope")-1, &scope); } } #else @@ -355,6 +360,12 @@ HashTable *php_phongo_javascript_get_properties(zval *object TSRMLS_DC) /* {{{ * } zval_ptr_dtor(&state.zchild); + } else { + zval *scope; + + MAKE_STD_ZVAL(scope); + ZVAL_NULL(scope); + zend_hash_update(props, "scope", sizeof("scope"), &scope, sizeof(scope), NULL); } } #endif diff --git a/tests/bson/bson-javascript-serialization-001.phpt b/tests/bson/bson-javascript-serialization-001.phpt index b06d6453b..b3bb37aa3 100644 --- a/tests/bson/bson-javascript-serialization-001.phpt +++ b/tests/bson/bson-javascript-serialization-001.phpt @@ -26,11 +26,15 @@ foreach ($tests as $test) { object(MongoDB\BSON\Javascript)#%d (%d) { ["code"]=> string(33) "function foo(bar) { return bar; }" + ["scope"]=> + NULL } -string(87) "O:23:"MongoDB\BSON\Javascript":1:{s:4:"code";s:33:"function foo(bar) { return bar; }";}" +string(101) "O:23:"MongoDB\BSON\Javascript":2:{s:4:"code";s:33:"function foo(bar) { return bar; }";s:5:"scope";N;}" object(MongoDB\BSON\Javascript)#%d (%d) { ["code"]=> string(33) "function foo(bar) { return bar; }" + ["scope"]=> + NULL } object(MongoDB\BSON\Javascript)#%d (%d) { diff --git a/tests/bson/bson-javascript-set_state-001.phpt b/tests/bson/bson-javascript-set_state-001.phpt index 93b64cf44..5c691917c 100644 --- a/tests/bson/bson-javascript-set_state-001.phpt +++ b/tests/bson/bson-javascript-set_state-001.phpt @@ -32,6 +32,7 @@ echo "\n\n"; --EXPECTF-- MongoDB\BSON\Javascript::__set_state(array( 'code' => 'function foo(bar) { return bar; }', + 'scope' => NULL, )) MongoDB\BSON\Javascript::__set_state(array( @@ -62,6 +63,7 @@ MongoDB\BSON\Javascript::__set_state(array( MongoDB\BSON\Javascript::__set_state(array( 'code' => 'function foo(bar) { return bar; }', + 'scope' => NULL, )) ===DONE===