From ee4fbaa37e4577a4a51a5810489393afe51ce870 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 9 Mar 2009 19:56:46 +0000 Subject: [PATCH] * configure.in (MANGLED_PATH): defines for RUBYLIB_PREFIX. * ruby.c (ruby_init_loadpath_safe): uses string as buffer. * symbian/setup (config_h): defines MANGLED_PATH. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 +++++++- configure.in | 1 + ruby.c | 29 ++++++++++++----------------- symbian/setup | 1 + 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 281150df2a..70e0a1a160 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,15 @@ -Tue Mar 10 04:53:16 2009 Nobuyoshi Nakada +Tue Mar 10 04:56:44 2009 Nobuyoshi Nakada * configure.in (MINIRUBY): keep macro into Makefile. * configure.in (RUBY_CHECK_SIZEOF): fix for fallback. + * configure.in (MANGLED_PATH): defines for RUBYLIB_PREFIX. + + * ruby.c (ruby_init_loadpath_safe): uses string as buffer. + + * symbian/setup (config_h): defines MANGLED_PATH. + Tue Mar 10 03:48:27 2009 Nobuyoshi Nakada * ext/dl/callback/depend: fix for parallel build. diff --git a/configure.in b/configure.in index a21490e2ea..a8ab5e1542 100644 --- a/configure.in +++ b/configure.in @@ -1778,6 +1778,7 @@ else DLEXT=dll;; when(cygwin*|mingw*|*djgpp*) LOAD_RELATIVE=1 + AC_DEFINE(MANGLED_PATH) DLEXT=so;; when(*) DLEXT=so;; diff --git a/ruby.c b/ruby.c index e712c2656d..2091cec9eb 100644 --- a/ruby.c +++ b/ruby.c @@ -169,7 +169,7 @@ usage(const char *name) VALUE rb_get_load_path(void); -#if defined _WIN32 || defined __CYGWIN__ || defined __SYMBIAN32__ +#ifdef MANGLED_PATH static VALUE rubylib_mangled_path(const char *s, unsigned int l) { @@ -209,15 +209,8 @@ rubylib_mangled_path(const char *s, unsigned int l) ptr[l + newl - oldl] = 0; return ret; } - -static VALUE -rubylib_mangled_path2(const char *s) -{ - return rubylib_mangled_path(s, strlen(s)); -} #else #define rubylib_mangled_path rb_str_new -#define rubylib_mangled_path2 rb_str_new_cstr #endif static void @@ -353,7 +346,7 @@ ruby_init_loadpath_safe(int safe_level) #if defined LOAD_RELATIVE char libpath[MAXPATHLEN + 1]; char *p; - int rest; + int baselen; libpath[0] = '\0'; #if defined _WIN32 || defined __CYGWIN__ @@ -362,7 +355,7 @@ ruby_init_loadpath_safe(int safe_level) _execname(libpath, sizeof(libpath) - 1); #elif defined(HAVE_DLADDR) Dl_info dli; - if (dladdr(ruby_init_loadpath_safe, &dli)) { + if (dladdr(expand_include_path, &dli)) { strlcpy(libpath, dli.dli_fname, sizeof(libpath)); } #endif @@ -390,13 +383,14 @@ ruby_init_loadpath_safe(int safe_level) p = libpath + 1; } - rest = sizeof(libpath) - 1 - (p - libpath); + baselen = p - libpath; -#define RUBY_RELATIVE(path) (strlcpy(p, (path), rest), libpath) +#define BASEPATH() rb_str_buf_cat(rb_str_buf_new(baselen+len), libpath, baselen) +#define RUBY_RELATIVE(path, len) rb_str_buf_cat(BASEPATH(), path, len) #else -#define RUBY_RELATIVE(path) (path) +#define RUBY_RELATIVE(path, len) rubylib_mangled_path(path, len) #endif -#define incpush(path) rb_ary_push(load_path, rubylib_mangled_path2(path)) +#define incpush(path) rb_ary_push(load_path, (path)) load_path = GET_VM()->load_path; if (safe_level == 0) { @@ -404,12 +398,13 @@ ruby_init_loadpath_safe(int safe_level) } while (*paths) { - incpush(RUBY_RELATIVE(paths)); - paths += strlen(paths) + 1; + int len = strlen(paths); + incpush(RUBY_RELATIVE(paths, len)); + paths += len + 1; } if (safe_level == 0) { - incpush("."); + rb_ary_push(load_path, rb_str_new_cstr(".")); } } diff --git a/symbian/setup b/symbian/setup index c3ce317ad5..aeb59e7c72 100644 --- a/symbian/setup +++ b/symbian/setup @@ -163,6 +163,7 @@ define config_h @echo>>$(1) #define HAVE_LIBPTHREAD 1 @echo>>$(1) #define HAVE_NANOSLEEP 1 @echo>>$(1) #define USE_ELF 1 +@echo>>$(1) #define MANGLED_PATH 1 @echo>>$(1) #define DLEXT_MAXLEN 4 @echo>>$(1) #define DLEXT ".dll" @echo>>$(1) #define DLN_NEEDS_ALT_SEPARATOR 1