diff --git a/tests/issue_504_001.phpt b/tests/issue_504_001.phpt new file mode 100644 index 0000000..79d9658 --- /dev/null +++ b/tests/issue_504_001.phpt @@ -0,0 +1,20 @@ +--TEST-- +Test empty() : Segmentation fault caused by 'empty' check on a V8Function object +--SKIPIF-- + +--FILE-- +executeString(' + a = { + main: function() {} + }; +', null, V8Js::FLAG_FORCE_ARRAY | V8Js::FLAG_PROPAGATE_PHP_EXCEPTIONS); + +if (!empty($r['main'])) { + echo 'Ok' . PHP_EOL; +} +?> +--EXPECTF-- +Ok + diff --git a/v8js_v8object_class.cc b/v8js_v8object_class.cc index 7bc4b4f..a27fd63 100644 --- a/v8js_v8object_class.cc +++ b/v8js_v8object_class.cc @@ -933,7 +933,6 @@ PHP_MINIT_FUNCTION(v8js_v8object_class) /* {{{ */ /* V8 handlers */ memcpy(&v8js_v8object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); v8js_v8object_handlers.clone_obj = NULL; - v8js_v8object_handlers.cast_object = NULL; v8js_v8object_handlers.get_property_ptr_ptr = v8js_v8object_get_property_ptr_ptr; v8js_v8object_handlers.has_property = v8js_v8object_has_property; v8js_v8object_handlers.read_property = v8js_v8object_read_property;