summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-03-10 21:12:49 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-03-10 21:12:49 +0000
commit745bc1fd83595c869e9d4b3e5e933e332a6c7c8d (patch)
tree8378f1e1050ad9cfa5baf6ed47c7a9ba9f115cd1
parent8231655dea0c216d9a3bd08796a43ddb3399d699 (diff)
* ruby.c (ruby_init_loadpath_safe): expands libpath and removes
last /lib. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22881 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--ruby.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 005cdfacf9..7bcf57ff0a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Mar 11 06:12:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): expands libpath and removes
+ last /lib.
+
Wed Mar 11 04:47:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* time.c (time_to_i, time_hash): time_t may be bigger than long
diff --git a/ruby.c b/ruby.c
index 2091cec9eb..0fff0033a0 100644
--- a/ruby.c
+++ b/ruby.c
@@ -348,15 +348,15 @@ ruby_init_loadpath_safe(int safe_level)
char *p;
int baselen;
- libpath[0] = '\0';
#if defined _WIN32 || defined __CYGWIN__
GetModuleFileName(libruby, libpath, sizeof libpath);
#elif defined(__EMX__)
_execname(libpath, sizeof(libpath) - 1);
#elif defined(HAVE_DLADDR)
Dl_info dli;
+ libpath[0] = '\0';
if (dladdr(expand_include_path, &dli)) {
- strlcpy(libpath, dli.dli_fname, sizeof(libpath));
+ realpath(dli.dli_fname, libpath);
}
#endif
@@ -373,7 +373,7 @@ ruby_init_loadpath_safe(int safe_level)
p = strrchr(libpath, '/');
if (p) {
*p = 0;
- if (p - libpath > 3 && !STRCASECMP(p - 4, "/bin")) {
+ if (p - libpath > 3 && !(STRCASECMP(p - 4, "/bin") && strcmp(p - 4, "/lib"))) {
p -= 4;
*p = 0;
}