summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--eval.c1
-rw-r--r--io.c2
3 files changed, 7 insertions, 1 deletions
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 <matz@ruby-lang.org>
+
+ * 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 <eban@os.rim.or.jp>
* 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