summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--eval_intern.h2
-rw-r--r--load.c4
-rw-r--r--vm.c4
4 files changed, 12 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 1d0c3ef22b..57b03a17e3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Thu Jun 3 18:58:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (ruby_init_ext): statically linked extensions have no
+ real path. [ruby-dev:41526]
+
+ * vm.c (rb_vm_call_cfunc): add filepath argument.
+
Thu Jun 3 18:17:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* test/rake/test_win32.rb (Rake::TestWin32): update tests.
diff --git a/eval_intern.h b/eval_intern.h
index 549953acfc..909b10abc0 100644
--- a/eval_intern.h
+++ b/eval_intern.h
@@ -205,7 +205,7 @@ NORETURN(void rb_raise_method_missing(rb_thread_t *th, int argc, VALUE *argv,
VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val);
NODE *rb_vm_cref(void);
-VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, const rb_block_t *blockptr, VALUE filename);
+VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, const rb_block_t *blockptr, VALUE filename, VALUE filepath);
void rb_vm_set_progname(VALUE filename);
void rb_thread_terminate_all(void);
VALUE rb_vm_top_self();
diff --git a/load.c b/load.c
index cdeff925ea..b4ec2d9b54 100644
--- a/load.c
+++ b/load.c
@@ -596,7 +596,7 @@ rb_require_safe(VALUE fname, int safe)
case 's':
handle = (long)rb_vm_call_cfunc(rb_vm_top_self(), load_ext,
- path, 0, path);
+ path, 0, path, path);
rb_ary_push(ruby_dln_librefs, LONG2NUM(handle));
break;
}
@@ -643,7 +643,7 @@ ruby_init_ext(const char *name, void (*init)(void))
{
if (load_lock(name)) {
rb_vm_call_cfunc(rb_vm_top_self(), init_ext_call, (VALUE)init,
- 0, rb_str_new2(name));
+ 0, rb_str_new2(name), Qnil);
rb_provide(name);
load_unlock(name, 1);
}
diff --git a/vm.c b/vm.c
index d1563d57f2..1817e6e797 100644
--- a/vm.c
+++ b/vm.c
@@ -1444,11 +1444,11 @@ rb_thread_current_status(const rb_thread_t *th)
VALUE
rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg,
- const rb_block_t *blockptr, VALUE filename)
+ const rb_block_t *blockptr, VALUE filename, VALUE filepath)
{
rb_thread_t *th = GET_THREAD();
const rb_control_frame_t *reg_cfp = th->cfp;
- volatile VALUE iseqval = rb_iseq_new(0, filename, filename, filename, 0, ISEQ_TYPE_TOP);
+ volatile VALUE iseqval = rb_iseq_new(0, filename, filename, filepath, 0, ISEQ_TYPE_TOP);
VALUE val;
vm_push_frame(th, DATA_PTR(iseqval), VM_FRAME_MAGIC_TOP,