diff --git a/ChangeLog b/ChangeLog index b93e6d27b9..fff4a2bd10 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Aug 9 16:31:48 2000 Yukihiro Matsumoto + + * eval.c (rb_callcc): thread status for continuations must be + THREAD_KILLED, otherwise thread_free() breaks other threads. + Wed Aug 9 13:24:25 2000 WATANABE Hirofumi * win32/win32.[ch]: emulate rename(2). diff --git a/eval.c b/eval.c index 58305a76b1..c36ce31661 100644 --- a/eval.c +++ b/eval.c @@ -8092,6 +8092,7 @@ rb_callcc(self) struct tag *tag; THREAD_ALLOC(th); + th->status = THREAD_KILLED; th->thread = cont = Data_Wrap_Struct(rb_cCont, thread_mark, thread_free, th); diff --git a/io.c b/io.c index 5081c15d93..642dd05f5d 100644 --- a/io.c +++ b/io.c @@ -2836,7 +2836,7 @@ rb_f_syscall(argc, argv) int argc; VALUE *argv; { -#ifdef HAVE_SYSCALL +#if defined(HAVE_SYSCALL) && !defined(__CHECKER__) #ifdef atarist unsigned long arg[14]; /* yes, we really need that many ! */ #else