<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -155,6 +155,7 @@ initialize_native(VALUE self, VALUE UNUSED(options))
   JohnsonRuntime* runtime;
   Data_Get_Struct(self, JohnsonRuntime, runtime);
   
+  bool global_rooted_p = false;
   bool gcthings_rooted_p = false;
 
   if ((runtime-&gt;js = JS_NewRuntime(0x100000))
@@ -166,11 +167,14 @@ initialize_native(VALUE self, VALUE UNUSED(options))
     JSContext* context = johnson_get_current_context(runtime);
     if(
         (runtime-&gt;gcthings = JS_NewObject(context, NULL, 0, 0))
+        &amp;&amp;(gcthings_rooted_p = JS_AddNamedRoot(context, &amp;(runtime-&gt;gcthings), &quot;runtime-&gt;gcthings&quot;))
         &amp;&amp;(runtime-&gt;global = JS_GetGlobalObject(context))
-        &amp;&amp;(gcthings_rooted_p = JS_AddNamedRoot(context, &amp;(runtime-&gt;global), &quot;runtime-&gt;global&quot;))
+        &amp;&amp;(global_rooted_p = JS_AddNamedRoot(context, &amp;(runtime-&gt;global), &quot;runtime-&gt;global&quot;))
     ) {
       return self;
     }
+    if (global_rooted_p)
+      JS_RemoveRoot(context, &amp;(runtime-&gt;global));
     if (gcthings_rooted_p)
       JS_RemoveRoot(context, &amp;(runtime-&gt;gcthings));
   }</diff>
      <filename>ext/spidermonkey/runtime.c</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>947c557bb8b54f75e236c09209492dce5d650b36</id>
    </parent>
  </parents>
  <author>
    <name>Matthew Draper</name>
    <email>matthew@trebex.net</email>
  </author>
  <url>http://github.com/jbarnette/johnson/commit/dc9c9cb4769a1acb15be6c089dd324e24fa75584</url>
  <id>dc9c9cb4769a1acb15be6c089dd324e24fa75584</id>
  <committed-date>2008-05-31T19:58:41-07:00</committed-date>
  <authored-date>2008-05-31T19:51:22-07:00</authored-date>
  <message>Root both gcthings and global.</message>
  <tree>855e38e6665d51257e846be7ce697d4f045ab9b5</tree>
  <committer>
    <name>Matthew Draper</name>
    <email>matthew@trebex.net</email>
  </committer>
</commit>
