summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-10-12 07:24:42 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-10-12 07:24:42 +0000
commit2efac157b8e70e6be734caefe8a0a823e40ae4a1 (patch)
tree194407056d4a9a59f37533e22b27e0cb6901fed4 /ruby.c
parentc171c834852bf9d124b56e1d6d4cb1ff865280db (diff)
merge revision(s) 36847,36873: [Backport #7115]
* configure.in (LIBDIR_BASENAME): use configured libdir value to fix --enable-load-relative on systems where libdir is not default value, overridden in config.site files. [ruby-core:47267] [Bug #6903] * ruby.c (ruby_init_loadpath_safe): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@37155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/ruby.c b/ruby.c
index 3c97d01ddd..44cec06366 100644
--- a/ruby.c
+++ b/ruby.c
@@ -410,9 +410,21 @@ ruby_init_loadpath_safe(int safe_level)
#endif
p = strrchr(libpath, '/');
if (p) {
+ static const char bindir[] = "/bin";
+#ifdef LIBDIR_BASENAME
+ static const char libdir[] = "/"LIBDIR_BASENAME;
+#else
+ static const char libdir[] = "/lib";
+#endif
+ const ptrdiff_t bindir_len = (ptrdiff_t)sizeof(bindir) - 1;
+ const ptrdiff_t libdir_len = (ptrdiff_t)sizeof(libdir) - 1;
*p = 0;
- if (p - libpath > 3 && !(STRCASECMP(p - 4, "/bin") && strcmp(p - 4, "/lib"))) {
- p -= 4;
+ if (p - libpath >= bindir_len && !STRCASECMP(p - bindir_len, bindir)) {
+ p -= bindir_len;
+ *p = 0;
+ }
+ else if (p - libpath >= libdir_len && !STRCASECMP(p - libdir_len, libdir)) {
+ p -= libdir_len;
*p = 0;
}
}