therubyracer 0.9.4 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of therubyracer might be problematic. Click here for more details.
- data/ext/v8/v8_exception.cpp +9 -9
- data/lib/v8/error.rb +5 -7
- data/lib/v8/portal/caller.rb +11 -13
- data/lib/v8/version.rb +1 -1
- data/therubyracer.gemspec +2 -2
- metadata +6 -6
data/ext/v8/v8_exception.cpp
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#include "v8_exception.h"
|
2
2
|
#include "rr.h"
|
3
3
|
#include "v8_handle.h"
|
4
|
-
#include "execinfo.h"
|
5
|
-
#include "signal.h"
|
4
|
+
// #include "execinfo.h"
|
5
|
+
// #include "signal.h"
|
6
6
|
|
7
7
|
using namespace v8;
|
8
8
|
namespace {
|
@@ -10,14 +10,14 @@ namespace {
|
|
10
10
|
static void* stack[20];
|
11
11
|
|
12
12
|
void fatal(const char* location, const char* message) {
|
13
|
-
rb_raise(rb_eFatal, "%s: %s", location, message);
|
14
|
-
}
|
15
|
-
void segfault(int sig) {
|
16
|
-
fprintf(stderr, "segfault: game over.\n");
|
17
|
-
int size = backtrace(stack, 20);
|
18
|
-
backtrace_symbols_fd(stack, size, 2);
|
19
|
-
exit(1);
|
13
|
+
rb_raise(rb_eFatal, "%s: %s", location, message);
|
20
14
|
}
|
15
|
+
// void segfault(int sig) {
|
16
|
+
// fprintf(stderr, "segfault: game over.\n");
|
17
|
+
// int size = backtrace(stack, 20);
|
18
|
+
// backtrace_symbols_fd(stack, size, 2);
|
19
|
+
// exit(1);
|
20
|
+
// }
|
21
21
|
VALUE _ThrowException(VALUE rbmod, VALUE value) {
|
22
22
|
HandleScope scope;
|
23
23
|
Handle<Value> err = rr_rb2v8(value);
|
data/lib/v8/error.rb
CHANGED
@@ -5,16 +5,14 @@ module V8
|
|
5
5
|
|
6
6
|
def initialize(try, to)
|
7
7
|
@to = to
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
super(<<-EOMSG)
|
8
|
+
super(initialize_unsafe(try))
|
9
|
+
rescue Exception => e
|
10
|
+
@boundaries = [Boundary.new(:rbframes => e.backtrace)]
|
11
|
+
@value = e
|
12
|
+
super(<<-EOMSG)
|
14
13
|
You have uncovered what is probably a BUG in therubyracer exception code. An error report would be very helpful.
|
15
14
|
JSError#initialize failed!: #{e.message}"
|
16
15
|
EOMSG
|
17
|
-
end
|
18
16
|
end
|
19
17
|
|
20
18
|
def initialize_unsafe(try)
|
data/lib/v8/portal/caller.rb
CHANGED
@@ -8,19 +8,17 @@ module V8
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def raw
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
V8::C::ThrowException(error)
|
23
|
-
end
|
11
|
+
yield
|
12
|
+
rescue Exception => e
|
13
|
+
case e
|
14
|
+
when SystemExit, NoMemoryError
|
15
|
+
raise e
|
16
|
+
else
|
17
|
+
error = V8::C::Exception::Error(V8::C::String::New(e.message))
|
18
|
+
#TODO: This is almost certainly a crash here.
|
19
|
+
#we need to hold onto `error` while it bubbles up the javascript stack.
|
20
|
+
error.SetHiddenValue("TheRubyRacer::Cause", C::External::New(e))
|
21
|
+
V8::C::ThrowException(error)
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
data/lib/v8/version.rb
CHANGED
data/therubyracer.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.description = "Call javascript code and manipulate javascript objects from ruby. Call ruby code and manipulate ruby objects from javascript."
|
12
12
|
s.homepage = "http://github.com/cowboyd/therubyracer"
|
13
13
|
s.email = "cowboyd@thefrontside.net"
|
14
|
-
|
14
|
+
|
15
15
|
root = Pathname(__FILE__).dirname
|
16
16
|
s.files = `git ls-files`.split("\n")
|
17
17
|
s.files += Dir.chdir(root.join("spec/redjs")) do
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.add_dependency "libv8", "~> 3.3.10"
|
25
25
|
|
26
|
-
s.add_development_dependency "rake"
|
26
|
+
s.add_development_dependency "rake"
|
27
27
|
s.add_development_dependency "rspec", "~> 2.0"
|
28
28
|
s.add_development_dependency "rake-compiler"
|
29
29
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: therubyracer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.9.
|
5
|
+
version: 0.9.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Charles Lowell
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-10-05 00:00:00 -05:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
@@ -30,9 +30,9 @@ dependencies:
|
|
30
30
|
requirement: &id002 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0
|
35
|
+
version: "0"
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: *id002
|
@@ -174,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
174
174
|
requirements:
|
175
175
|
- - ">="
|
176
176
|
- !ruby/object:Gem::Version
|
177
|
-
hash:
|
177
|
+
hash: 1929115652653361273
|
178
178
|
segments:
|
179
179
|
- 0
|
180
180
|
version: "0"
|
@@ -183,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
183
|
requirements:
|
184
184
|
- - ">="
|
185
185
|
- !ruby/object:Gem::Version
|
186
|
-
hash:
|
186
|
+
hash: 1929115652653361273
|
187
187
|
segments:
|
188
188
|
- 0
|
189
189
|
version: "0"
|