* 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
parent 2cafd39ed2
commit 4c1441870e
2 changed files with 28 additions and 2 deletions

View File

@ -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.

7
gc.c
View File

@ -53,11 +53,18 @@ static void
mem_error(mesg)
char *mesg;
{
static int recurse = 0;
if (rb_safe_level() >= 4) {
rb_raise(rb_eNoMemError, mesg);
}
if (recurse == 0) {
recurse++;
rb_fatal(mesg);
}
fprintf(stderr, "[FATAL] failed to allocate memory\n");
exit(1);
}
void *
ruby_xmalloc(size)