summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-05-09 04:53:16 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-05-09 04:53:16 +0000
commit0fb30e32b8e785b3804f7e78da3806ea1614dfcb (patch)
tree8ca11a61af0311dda461853cc8961a9bca899124 /eval.c
parente8bf824c5cf7cacf8b088f07d173346b5ec6bc0c (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.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/eval.c b/eval.c
index cfad6c625d..504a31c062 100644
--- a/eval.c
+++ b/eval.c
@@ -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;
}