mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* load.c (rb_get_expanded_load_path): does not expand paths if all
the items in $: are absolute paths. [ruby-core:28113] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fd684f1082
commit
d9fe7ef492
4 changed files with 24 additions and 9 deletions
|
@ -1,3 +1,8 @@
|
|||
Sat Mar 13 10:16:32 2010 Shugo Maeda <shugo@ruby-lang.org>
|
||||
|
||||
* load.c (rb_get_expanded_load_path): does not expand paths if all
|
||||
the items in $: are absolute paths. [ruby-core:28113]
|
||||
|
||||
Sat Mar 13 10:03:52 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* ext/tk/extconf.rb: fix [Bug #2840] Tk doesn't built in mingw.
|
||||
|
|
14
file.c
14
file.c
|
@ -2687,8 +2687,6 @@ ntfs_tail(const char *path)
|
|||
(void)(extenc || (extenc = rb_default_external_encoding())),\
|
||||
rb_enc_associate(result, extenc))
|
||||
|
||||
static int is_absolute_path(const char*);
|
||||
|
||||
VALUE
|
||||
rb_home_dir(const char *user, VALUE result)
|
||||
{
|
||||
|
@ -2802,7 +2800,7 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
else if (!is_absolute_path(s)) {
|
||||
else if (!rb_is_absolute_path(s)) {
|
||||
if (!NIL_P(dname)) {
|
||||
file_expand_path(dname, Qnil, abs_mode, result);
|
||||
BUFINIT();
|
||||
|
@ -4704,8 +4702,8 @@ rb_file_const(const char *name, VALUE value)
|
|||
rb_define_const(rb_mFConst, name, value);
|
||||
}
|
||||
|
||||
static int
|
||||
is_absolute_path(const char *path)
|
||||
int
|
||||
rb_is_absolute_path(const char *path)
|
||||
{
|
||||
#ifdef DOSISH_DRIVE_LETTER
|
||||
if (has_drive_letter(path) && isdirsep(path[2])) return 1;
|
||||
|
@ -4735,7 +4733,7 @@ path_check_0(VALUE path, int execpath)
|
|||
const char *p0 = StringValueCStr(path);
|
||||
char *p = 0, *s;
|
||||
|
||||
if (!is_absolute_path(p0)) {
|
||||
if (!rb_is_absolute_path(p0)) {
|
||||
char *buf = my_getcwd();
|
||||
VALUE newpath;
|
||||
|
||||
|
@ -4872,7 +4870,7 @@ rb_find_file_ext_safe(VALUE *filep, const char *const *ext, int safe_level)
|
|||
expanded = 1;
|
||||
}
|
||||
|
||||
if (expanded || is_absolute_path(f) || is_explicit_relative(f)) {
|
||||
if (expanded || rb_is_absolute_path(f) || is_explicit_relative(f)) {
|
||||
if (safe_level >= 1 && !fpath_check(fname)) {
|
||||
rb_raise(rb_eSecurityError, "loading from unsafe path %s", f);
|
||||
}
|
||||
|
@ -4943,7 +4941,7 @@ rb_find_file_safe(VALUE path, int safe_level)
|
|||
expanded = 1;
|
||||
}
|
||||
|
||||
if (expanded || is_absolute_path(f) || is_explicit_relative(f)) {
|
||||
if (expanded || rb_is_absolute_path(f) || is_explicit_relative(f)) {
|
||||
if (safe_level >= 1 && !fpath_check(path)) {
|
||||
rb_raise(rb_eSecurityError, "loading from unsafe path %s", f);
|
||||
}
|
||||
|
|
|
@ -366,6 +366,7 @@ char *rb_path_skip_prefix(const char *);
|
|||
char *rb_path_last_separator(const char *);
|
||||
char *rb_path_end(const char *);
|
||||
VALUE rb_file_directory_p(VALUE,VALUE);
|
||||
int rb_is_absolute_path(const char *);
|
||||
/* gc.c */
|
||||
void ruby_set_stack_size(size_t);
|
||||
NORETURN(void rb_memerror(void));
|
||||
|
|
13
load.c
13
load.c
|
@ -37,9 +37,20 @@ VALUE
|
|||
rb_get_expanded_load_path(void)
|
||||
{
|
||||
VALUE load_path = rb_get_load_path();
|
||||
VALUE ary = rb_ary_new2(RARRAY_LEN(load_path));
|
||||
VALUE ary;
|
||||
long i;
|
||||
|
||||
for (i = 0; i < RARRAY_LEN(load_path); ++i) {
|
||||
VALUE str = RARRAY_PTR(load_path)[i];
|
||||
if (TYPE(str) != T_STRING)
|
||||
RB_GC_GUARD(str) = rb_get_path(str);
|
||||
if (!rb_is_absolute_path(RSTRING_PTR(str)))
|
||||
goto relative_path_found;
|
||||
}
|
||||
return load_path;
|
||||
|
||||
relative_path_found:
|
||||
ary = rb_ary_new2(RARRAY_LEN(load_path));
|
||||
for (i = 0; i < RARRAY_LEN(load_path); ++i) {
|
||||
VALUE path = rb_file_expand_path(RARRAY_PTR(load_path)[i], Qnil);
|
||||
rb_str_freeze(path);
|
||||
|
|
Loading…
Add table
Reference in a new issue