diff --git a/ChangeLog b/ChangeLog index 514ffa2a5f..cbed08f168 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Wed Aug 2 18:27:47 2000 Yukihiro Matsumoto + + * eval.c (rb_thread_wait_fd): prohibit thread context switch + during compilation. + + * eval.c (rb_cont_call): prohibit Continuation#call across threads. + Wed Aug 2 08:22:04 2000 Yukihiro Matsumoto * gc.c (rb_gc): clear malloc_memories to zero, to avoid potential diff --git a/eval.c b/eval.c index f4b2328dde..352672b9db 100644 --- a/eval.c +++ b/eval.c @@ -478,6 +478,8 @@ rb_attr(klass, id, read, write, ex) } } +extern int ruby_in_compile; + VALUE ruby_errinfo = Qnil; extern NODE *ruby_eval_tree_begin; extern NODE *ruby_eval_tree; @@ -6892,7 +6894,6 @@ find_bad_fds(dst, src, max) void rb_thread_schedule() { - extern int ruby_in_compile; rb_thread_t next; /* OK */ rb_thread_t th; rb_thread_t curr; @@ -6906,11 +6907,6 @@ rb_thread_schedule() int n, max; int need_select = 0; - if (ruby_in_compile) { - printf("switch during compilation.\n"); - abort(); - } - rb_thread_pending = 0; if (curr_thread == curr_thread->next && curr_thread->status == THREAD_RUNNABLE) @@ -7093,6 +7089,7 @@ rb_thread_wait_fd(fd) int fd; { if (curr_thread == curr_thread->next) return; + if (ruby_in_compile) return; curr_thread->status = THREAD_STOPPED; curr_thread->fd = fd; diff --git a/version.h b/version.h index a1ab5b0046..356f641c02 100644 --- a/version.h +++ b/version.h @@ -1,4 +1,4 @@ #define RUBY_VERSION "1.5.5" -#define RUBY_RELEASE_DATE "2000-08-01" +#define RUBY_RELEASE_DATE "2000-08-02" #define RUBY_VERSION_CODE 155 -#define RUBY_RELEASE_CODE 20000801 +#define RUBY_RELEASE_CODE 20000802