summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-09 07:35:01 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-09 07:35:01 +0000
commitbf8f23b4fa47b000855083b717f646a159f6884f (patch)
tree001930267fe02d3669355db71853f2da69470fdd
parente0208c14e0e8161f80c14624a5d4a1f544a74a70 (diff)
downloadruby-bf8f23b4fa47b000855083b717f646a159f6884f.tar.gz
ruby-bf8f23b4fa47b000855083b717f646a159f6884f.tar.xz
ruby-bf8f23b4fa47b000855083b717f646a159f6884f.zip
matz(ruby-bugs PR#51)
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-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 b93e6d27b..fff4a2bd1 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 58305a76b..c36ce3166 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 5081c15d9..642dd05f5 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