summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-21 04:35:58 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-21 04:35:58 +0000
commit73997d38f41e05c8ebe614cc062d5355662320a1 (patch)
tree25713ac01cdbac5ec70bb547a5838a2ee3e4e97f /ruby.c
parentb32e8a5911d35b86916386e6b40f63d437ce8e2c (diff)
* ruby.c (ruby_init_loadpath_safe): use real path for non-shared
build. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/ruby.c b/ruby.c
index dbae66e1ac..fadb7cc0fe 100644
--- a/ruby.c
+++ b/ruby.c
@@ -370,9 +370,12 @@ ruby_init_loadpath_safe(int safe_level)
#elif defined(HAVE_DLADDR)
Dl_info dli;
if (dladdr(expand_include_path, &dli)) {
- VALUE fname = rb_str_new_cstr(dli.dli_fname);
- sopath = rb_file_absolute_path(fname, Qnil);
- rb_str_resize(fname, 0);
+ VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
+ char fbuf[MAXPATHLEN];
+ char *f = dln_find_file_r(dli.dli_fname, getenv(PATH_ENV), fbuf, sizeof(fbuf));
+ VALUE fname = rb_str_new_cstr(f);
+ rb_str_freeze(fname);
+ sopath = rb_realpath_internal(Qnil, fname, 1);
}
else {
sopath = rb_str_new(0, 0);