diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-05-09 04:53:16 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-05-09 04:53:16 +0000 |
commit | 0fb30e32b8e785b3804f7e78da3806ea1614dfcb (patch) | |
tree | 8ca11a61af0311dda461853cc8961a9bca899124 /eval.c | |
parent | e8bf824c5cf7cacf8b088f07d173346b5ec6bc0c (diff) |
2000-05-09
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_4@682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -4878,6 +4878,8 @@ rb_f_require(obj, fname) buf = ALLOCA_N(char, strlen(file)+sizeof(DLEXT)+1); strcpy(buf, feature); ext = strrchr(buf, '.'); + strcpy(ext, ".so"); + if (rb_provided(buf)) return Qfalse; strcpy(ext, DLEXT); file = feature = buf; if (rb_provided(feature)) return Qfalse; @@ -6250,8 +6252,8 @@ thread_free(th) th->stk_ptr = 0; if (th->locals) st_free_table(th->locals); if (th->status != THREAD_KILLED) { - th->prev->next = th->next; - th->next->prev = th->prev; + if (th->prev) th->prev->next = th->next; + if (th->next) th->next->prev = th->prev; } if (th != main_thread) free(th); } @@ -7497,6 +7499,7 @@ rb_callcc(self) for (tag=prot_tag; tag; tag=tag->prev) { scope_dup(tag->scope); } + th->prev = th->next = 0; if (THREAD_SAVE_CONTEXT(th)) { return th->result; } |