1
0
Fork 0
mirror of https://github.com/rubyjs/therubyracer synced 2023-03-27 23:21:42 -04:00

don't throw exceptions inside an open context. It ain't good.

This commit is contained in:
Charles Lowell 2010-05-23 04:26:32 +03:00
parent ded96b7847
commit c425c42ad9

View file

@ -17,16 +17,26 @@ module V8
def eval(javascript, filename = "<eval>", line = 1)
if IO === javascript || StringIO === javascript
javascript = javascript.read()
end
end
err = nil
value = nil
C::TryCatch.try do |try|
@native.enter do
script = C::Script::Compile(To.v8(javascript.to_s), To.v8(filename.to_s))
JavascriptError.check try
result = script.Run()
JavascriptError.check try
To.ruby(result)
if try.HasCaught()
err = JavascriptError.new(try)
else
result = script.Run()
if try.HasCaught()
err = JavascriptError.new(try)
else
value = To.ruby(result)
end
end
end
end
raise err if err
return value
end
def evaluate(*args)