diff --git a/ext/v8/v8_array.cpp b/ext/v8/v8_array.cpp index c20ff7a..37c4fa8 100644 --- a/ext/v8/v8_array.cpp +++ b/ext/v8/v8_array.cpp @@ -23,6 +23,7 @@ namespace { if (NIL_P(length)) { length = INT2FIX(0); } + HandleScope scope; return V8_Ref_Create(self, Array::New(NUM2INT(length))); } diff --git a/lib/v8/to.rb b/lib/v8/to.rb index 1e06f1d..dc23ed4 100644 --- a/lib/v8/to.rb +++ b/lib/v8/to.rb @@ -35,6 +35,12 @@ module V8 To.v8(value.call(*rbargs)) end return template.GetFunction() + when ::Array + C::Array::New(value.length).tap do |a| + value.each_with_index do |item, i| + a.Set(i, To.v8(item)) + end + end when nil,Numeric value else diff --git a/spec/redjs b/spec/redjs index a3705dc..b741908 160000 --- a/spec/redjs +++ b/spec/redjs @@ -1 +1 @@ -Subproject commit a3705dc106c37314c7da403e05062268d331d9dd +Subproject commit b74190886c2a7c8ff33fc4d927162d068fc9802e