From 53995ac616588c5e988a86628f1496ff668539fc Mon Sep 17 00:00:00 2001 From: Stefan Siegl Date: Wed, 26 Aug 2015 16:05:53 +0000 Subject: [PATCH] Make FLAG_FORCE_ARRAY not affect V8Function objects, #closes 160 --- tests/issue_160_basic.phpt | 23 +++++++++++++++++++++++ v8js_convert.cc | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 tests/issue_160_basic.phpt diff --git a/tests/issue_160_basic.phpt b/tests/issue_160_basic.phpt new file mode 100644 index 0000000..c26ee5d --- /dev/null +++ b/tests/issue_160_basic.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test V8::executeString() : Issue #160 V8Function affected by V8Js::FLAG_FORCE_ARRAY +--SKIPIF-- + +--FILE-- +executeString($JS, 'test', V8Js::FLAG_FORCE_ARRAY); + +var_dump($func); +$func("Test-Foo Func Call\n"); +?> +===EOF=== +--EXPECTF-- +object(V8Function)#%d (0) { +} +Test-Foo Func Call +===EOF=== diff --git a/v8js_convert.cc b/v8js_convert.cc index e9caf54..9f824bf 100644 --- a/v8js_convert.cc +++ b/v8js_convert.cc @@ -244,7 +244,7 @@ int v8js_to_zval(v8::Handle jsValue, zval *return_value, int flags, v RETVAL_ZVAL(object, 1, 0); return SUCCESS; } - if ((flags & V8JS_FLAG_FORCE_ARRAY) || jsValue->IsArray()) { + if ((flags & V8JS_FLAG_FORCE_ARRAY && !jsValue->IsFunction()) || jsValue->IsArray()) { array_init(return_value); return v8js_get_properties_hash(jsValue, Z_ARRVAL_P(return_value), flags, isolate TSRMLS_CC); } else {