diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-12-29 02:47:07 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-12-29 02:47:07 +0000 |
| commit | 1e738bc3ea9a69a66a7ef124ae59d7cbb3051d28 (patch) | |
| tree | fb6e749450b8bbbe33031daa2bdcfb0c7b61d626 | |
| parent | 2ba87ecdd70508a72412e340f4e4cc8094720b44 (diff) | |
| download | ruby-1e738bc3ea9a69a66a7ef124ae59d7cbb3051d28.tar.gz ruby-1e738bc3ea9a69a66a7ef124ae59d7cbb3051d28.tar.xz ruby-1e738bc3ea9a69a66a7ef124ae59d7cbb3051d28.zip | |
* gc.c (mem_error): prohibit recursive mem_error().
(ruby-bugs-ja:PR#36)
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@1086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 21 | ||||
| -rw-r--r-- | gc.c | 9 |
2 files changed, 28 insertions, 2 deletions
@@ -1,3 +1,22 @@ +Fri Dec 29 11:41:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org> + + * gc.c (mem_error): prohibit recursive mem_error(). + (ruby-bugs-ja:PR#36) + +Fri Dec 29 11:05:41 2000 Yukihiro Matsumoto <matz@ruby-lang.org> + + * eval.c (rb_thread_fd_writable): should not switch context if + rb_thread_critical is set. + + * eval.c (rb_thread_wait_fd): ditto. + + * eval.c (rb_thread_wait_for): ditto. + + * eval.c (rb_thread_select): ditto. + + * eval.c (rb_thread_join): join during critical section causes + deadlock. + Tue Dec 26 18:46:41 2000 NAKAMURA Hiroshi <nakahiro@sarion.co.jp> * lib/debug.rb: Avoid thread deadlock in debugging stopped thread. @@ -116,7 +135,7 @@ Tue Dec 19 13:44:50 2000 K.Kosako <kosako@sofnec.co.jp> Tue Dec 19 00:57:10 2000 Yukihiro Matsumoto <matz@ruby-lang.org> - * time.c (time_minus): usec might overflow (ruby-bugs-ja:#PR#35). + * time.c (time_minus): usec might overflow. (ruby-bugs-ja:PR#35) * eval.c (rb_obj_extend): Object#extend should take at least one argument. @@ -53,10 +53,17 @@ static void mem_error(mesg) char *mesg; { + static int recurse = 0; + if (rb_safe_level() >= 4) { rb_raise(rb_eNoMemError, mesg); } - rb_fatal(mesg); + if (recurse == 0) { + recurse++; + rb_fatal(mesg); + } + fprintf(stderr, "[FATAL] failed to allocate memory\n"); + exit(1); } void * |
