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 {