Changeset 72
- Timestamp:
- 09/06/2006 12:06:55 (2 years ago)
- Files:
-
- 1 modified
-
trunk/ext/sand_table/sand_table.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ext/sand_table/sand_table.c
r71 r72 119 119 rb_thread_t thread; 120 120 { 121 /* printf("SAVE: %lu, %lu -> %lu\n", thread, thread->sandbox, ruby_sandbox); */ 121 122 return Qnil; 122 123 } … … 126 127 rb_thread_t thread; 127 128 { 128 if (!NIL_P(thread->sandbox)) 129 /* printf("RESTORE: %lu, %lu -> %lu\n", thread, thread->sandbox, ruby_sandbox); */ 130 if (ruby_sandbox != thread->sandbox) 129 131 { 130 132 sandkit *kit; 131 Data_Get_Struct( thread->sandbox, sandkit, kit ); 132 sandbox_swap_in(kit); 133 if (NIL_P(thread->sandbox) && !NIL_P(ruby_sandbox)) 134 { 135 sandbox_swap_in(&real); 136 } 137 else if (!NIL_P(thread->sandbox)) 138 { 139 Data_Get_Struct( thread->sandbox, sandkit, kit ); 140 sandbox_swap_in(kit); 141 } 133 142 } 134 143 return Qnil; … … 437 446 sandbox_swap_out(go->kit); 438 447 curr_thread->sandbox = Qnil; 439 curr_thread->sandbox_restore = NULL;440 curr_thread->sandbox_save = NULL;441 448 442 449 go->kit->active = 0; … … 461 468 kit->active = 1; 462 469 463 curr_thread->sandbox_save = sandbox_save;464 curr_thread->sandbox_restore = sandbox_restore;465 470 curr_thread->sandbox = kit->self; 466 471 … … 2670 2675 StringValue(prelude); 2671 2676 go_cart *go = sandbox_begin(kit); 2672 rb_ require(RSTRING(prelude)->ptr);2677 rb_load(prelude, 0); 2673 2678 sandbox_whoa_whoa_whoa(go); 2674 2679 } … … 2765 2770 real.active = 1; 2766 2771 2772 /* FIXME: all threads should run through sandbox_save. */ 2773 curr_thread->sandbox_save = sandbox_save; 2774 curr_thread->sandbox_restore = sandbox_restore; 2775 2767 2776 rb_cSandbox = rb_define_class("Sandbox", rb_cObject); 2768 2777 rb_define_const( rb_cSandbox, "VERSION", rb_str_new2( SAND_VERSION ) );
