summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-23 19:53:45 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-23 19:53:45 +0000
commit68ae248e5787e613f8c825fe8550d9e86ce12d30 (patch)
treeb9353d3b26f0ff6144fc628574d90bec093b90d4 /eval.c
parent3da9cc7c41380fffa2e7cd4a8d6f9f081c9d0d2b (diff)
downloadruby-68ae248e5787e613f8c825fe8550d9e86ce12d30.tar.gz
ruby-68ae248e5787e613f8c825fe8550d9e86ce12d30.tar.xz
ruby-68ae248e5787e613f8c825fe8550d9e86ce12d30.zip
* io.c (read_all): do not return nil at the end of file.
[ruby-dev:22334] * io.c (argf_read): do not depend on nil at eof behavior of IO#read(). * eval.c (rb_thread_join): dup exception before re-raising it. * io.c (rb_io_eof): call clearerr() to prevent side effect. this patch is supplied by Masahiro Sakai <sakai@tom.sfc.keio.ac.jp>. [ruby-dev:22234] * pack.c (OFF16): get offset for big endian machines. * pack.c (pack_pack): use OFF16 instead of OFF16B. [ruby-dev:22344] * pack.c (pack_unpack): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/eval.c b/eval.c
index 8d19602c4..0e033c2c7 100644
--- a/eval.c
+++ b/eval.c
@@ -9204,12 +9204,13 @@ rb_thread_join(th, limit)
if (!NIL_P(th->errinfo) && (th->flags & THREAD_RAISED)) {
VALUE oldbt = get_backtrace(th->errinfo);
VALUE errat = make_backtrace();
+ VALUE errinfo = rb_obj_dup(th->errinfo);
if (TYPE(oldbt) == T_ARRAY && RARRAY(oldbt)->len > 0) {
rb_ary_unshift(errat, rb_ary_entry(oldbt, 0));
}
- set_backtrace(th->errinfo, errat);
- rb_exc_raise(th->errinfo);
+ set_backtrace(errinfo, errat);
+ rb_exc_raise(errinfo);
}
return Qtrue;