* gc.c (mem_error): prohibit recursive mem_error().

(ruby-bugs-ja:PR#36)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2000-12-29 02:47:07 +00:00
Родитель 2cafd39ed2
Коммит 4c1441870e
2 изменённых файлов: 28 добавлений и 2 удалений

Просмотреть файл

@ -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> Tue Dec 26 18:46:41 2000 NAKAMURA Hiroshi <nakahiro@sarion.co.jp>
* lib/debug.rb: Avoid thread deadlock in debugging stopped thread. * 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> 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 * eval.c (rb_obj_extend): Object#extend should take at least one
argument. argument.

9
gc.c
Просмотреть файл

@ -53,10 +53,17 @@ static void
mem_error(mesg) mem_error(mesg)
char *mesg; char *mesg;
{ {
static int recurse = 0;
if (rb_safe_level() >= 4) { if (rb_safe_level() >= 4) {
rb_raise(rb_eNoMemError, mesg); 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 * void *