diff --git a/ChangeLog b/ChangeLog index fda4bb2d13..d708a6e83b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sat Oct 6 16:24:02 2007 Koichi Sasada + + * cont.c (cont_free): check Fiber or Continuation. + + * bootstraptest/test_knownbug.rb: remove a fixed test. + Sat Oct 6 14:56:02 2007 Nobuyoshi Nakada * encoding.c (rb_enc_register): returns new index or -1 if failed. diff --git a/bootstraptest/test_knownbug.rb b/bootstraptest/test_knownbug.rb index ba91d5ca9f..9c1602eb9d 100644 --- a/bootstraptest/test_knownbug.rb +++ b/bootstraptest/test_knownbug.rb @@ -17,11 +17,6 @@ assert_normal_exit %q{ Marshal.load(Marshal.dump({"k"=>"v"}), lambda {|v| }) } -assert_normal_exit %q{ - require 'continuation' - Fiber.new{ callcc{|c| @c = c } }.resume -}, '[ruby-dev:31913]' - assert_not_match /method_missing/, %q{ STDERR.reopen(STDOUT) variable_or_mehtod_not_exist diff --git a/cont.c b/cont.c index 36baa41ba2..bc812674f9 100644 --- a/cont.c +++ b/cont.c @@ -86,7 +86,8 @@ cont_free(void *ptr) RUBY_FREE_UNLESS_NULL(cont->machine_register_stack); #endif RUBY_FREE_UNLESS_NULL(cont->vm_stack); - if (cont->saved_thread.local_storage) { + if (cont->vm_stack && cont->saved_thread.local_storage) { + /* fiber */ st_free_table(cont->saved_thread.local_storage); } ruby_xfree(ptr);