<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -185,27 +185,28 @@ respond_to_p(int argc, const VALUE* argv, VALUE self)
 static VALUE
 native_call(int argc, VALUE* argv, VALUE self)
 {
-  // FIXME: This should really call super#native_call.
   if (!function_p(self))
-    rb_raise(rb_eRuntimeError, &quot;This Johnson::SpiderMonkey::RubyLandProxy isn't a function.&quot;);
+    rb_raise(rb_eRuntimeError,
+      &quot;This Johnson::SpiderMonkey::RubyLandProxy isn't a function.&quot;);
 
   if (argc &lt; 1)
     rb_raise(rb_eArgError, &quot;Target object required&quot;);
 
   RubyLandProxy* proxy;
   Data_Get_Struct(self, RubyLandProxy, proxy);
-  JSContext * context = johnson_get_current_context(proxy-&gt;runtime);
-  
-  PREPARE_RUBY_JROOTS(context, 1);
-  
+
   jsval proxy_value;
-  JCHECK(get_jsval_for_proxy(proxy, &amp;proxy_value));
-  JROOT(proxy_value);
+
+  if (!get_jsval_for_proxy(proxy, &amp;proxy_value))
+    raise_js_error_in_ruby(proxy-&gt;runtime);
 
   jsval global;
-  JCHECK(convert_to_js(proxy-&gt;runtime, argv[0], &amp;global));
 
-  JRETURN_RUBY(call_js_function_value(proxy-&gt;runtime, global, proxy_value, argc - 1, &amp;(argv[1])));
+  if (!convert_to_js(proxy-&gt;runtime, argv[0], &amp;global))
+    raise_js_error_in_ruby(proxy-&gt;runtime);
+
+  return call_js_function_value(proxy-&gt;runtime, global, proxy_value,
+    argc - 1, &amp;(argv[1]));
 }
 
 static void</diff>
      <filename>ext/spidermonkey/ruby_land_proxy.c</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@
 
 Gem::Specification.new do |s|
   s.name = %q{johnson}
-  s.version = &quot;1.0.0.20090402144841&quot;
+  s.version = &quot;1.0.0.20090402155420&quot;
 
   s.required_rubygems_version = Gem::Requirement.new(&quot;&gt;= 0&quot;) if s.respond_to? :required_rubygems_version=
   s.authors = [&quot;John Barnette&quot;, &quot;Aaron Patterson&quot;, &quot;Yehuda Katz&quot;, &quot;Matthew Draper&quot;]</diff>
      <filename>johnson.gemspec</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ab34a2dc0dac13c28cfe583794012cb4f7926f31</id>
    </parent>
  </parents>
  <author>
    <name>John Barnette</name>
    <email>jbarnette@gmail.com</email>
  </author>
  <url>http://github.com/jbarnette/johnson/commit/a378640d8fc430b48325c78b41dfcabf0c88894b</url>
  <id>a378640d8fc430b48325c78b41dfcabf0c88894b</id>
  <committed-date>2009-04-02T15:55:11-07:00</committed-date>
  <authored-date>2009-04-02T15:54:13-07:00</authored-date>
  <message>Remove a leaking root in native_call.</message>
  <tree>65679317f13e3503c46a29c729e2989447f8b043</tree>
  <committer>
    <name>John Barnette</name>
    <email>jbarnette@gmail.com</email>
  </committer>
</commit>
