summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-02 09:22:27 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-02 09:22:27 +0000
commit6689997b5eec76e1f3a0f5670f963aa8ae193417 (patch)
tree17e1f9d1a3b3f471e806310ea15f84c8d9ea998c
parentf32c76a2668cdbee36f1c6515693b41428f865e7 (diff)
matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--eval.c3
-rw-r--r--intern.h2
-rw-r--r--ruby.c37
-rw-r--r--win32/ruby.def3
4 files changed, 26 insertions, 19 deletions
diff --git a/eval.c b/eval.c
index 31f4694071..f4b2328dde 100644
--- a/eval.c
+++ b/eval.c
@@ -8110,6 +8110,9 @@ rb_cont_call(argc, argv, cont)
{
rb_thread_t th = rb_thread_check(cont);
+ if (th->next != curr_thread) {
+ rb_raise(rb_eRuntimeError, "continuation called across threads");
+ }
switch (argc) {
case 0:
th->result = Qnil;
diff --git a/intern.h b/intern.h
index fbda2a459b..6369cace44 100644
--- a/intern.h
+++ b/intern.h
@@ -281,6 +281,8 @@ void ruby_prog_init _((void));
void ruby_set_argv _((int, char**));
void ruby_process_options _((int, char**));
void ruby_load_script _((void));
+void ruby_init_loadpath _((void));
+void ruby_incpush _((const char*));
/* signal.c */
VALUE rb_f_kill _((int, VALUE*));
void rb_gc_mark_trap_list _((void));
diff --git a/ruby.c b/ruby.c
index e74bc96a5c..799377b874 100644
--- a/ruby.c
+++ b/ruby.c
@@ -166,8 +166,8 @@ rubylib_mangle(s, l)
#define rubylib_mangled_path2(s) rb_str_new2(s)
#endif
-static void
-incpush(path)
+void
+ruby_incpush(path)
const char *path;
{
const char sep = PATH_SEP_CHAR;
@@ -203,36 +203,36 @@ incpush(path)
}
}
-static void
-ruby_path_init()
+void
+ruby_init_loadpath()
{
if (rb_safe_level() == 0) {
- incpush(getenv("RUBYLIB"));
+ ruby_incpush(getenv("RUBYLIB"));
}
#ifdef RUBY_SEARCH_PATH
- incpush(RUBY_SEARCH_PATH);
+ ruby_incpush(RUBY_SEARCH_PATH);
#endif
#ifdef RUBY_SITE_THIN_ARCHLIB
- incpush(RUBY_SITE_THIN_ARCHLIB);
+ ruby_incpush(RUBY_SITE_THIN_ARCHLIB);
#endif
- incpush(RUBY_SITE_ARCHLIB);
- incpush(RUBY_SITE_LIB2);
- incpush(RUBY_SITE_LIB);
+ ruby_incpush(RUBY_SITE_ARCHLIB);
+ ruby_incpush(RUBY_SITE_LIB2);
+ ruby_incpush(RUBY_SITE_LIB);
#ifdef RUBY_THIN_ARCHLIB
- incpush(RUBY_THIN_ARCHLIB);
+ ruby_incpush(RUBY_THIN_ARCHLIB);
#endif
- incpush(RUBY_ARCHLIB);
+ ruby_incpush(RUBY_ARCHLIB);
- incpush(RUBY_LIB);
+ ruby_incpush(RUBY_LIB);
#if defined(_WIN32) || defined(DJGPP)
- incpush(ruby_libpath());
+ ruby_incpush(ruby_libpath());
#endif
if (rb_safe_level() == 0) {
- incpush(".");
+ ruby_incpush(".");
}
}
@@ -360,7 +360,6 @@ proc_options(argc, argv)
if (argc == 0) return;
- version = Qfalse;
do_search = Qfalse;
for (argc--,argv++; argc > 0; argc--,argv++) {
@@ -515,9 +514,9 @@ proc_options(argc, argv)
case 'I':
forbid_setid("-I");
if (*++s)
- incpush(s);
+ ruby_incpush(s);
else if (argv[1]) {
- incpush(argv[1]);
+ ruby_incpush(argv[1]);
argc--,argv++;
}
break;
@@ -659,7 +658,7 @@ proc_options(argc, argv)
ruby_set_argv(argc, argv);
process_sflag();
- ruby_path_init();
+ ruby_init_loadpath();
ruby_sourcefile = argv0;
if (e_script) {
require_libraries();
diff --git a/win32/ruby.def b/win32/ruby.def
index 977eb57e3f..274948aef4 100644
--- a/win32/ruby.def
+++ b/win32/ruby.def
@@ -503,6 +503,9 @@ EXPORTS
ruby_prog_init
ruby_set_argv
ruby_process_options
+ ruby_load_script
+ ruby_init_loadpath
+ ruby_incpush
;signal.c
rb_f_kill
rb_gc_mark_trap_list