diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-14 22:41:04 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-14 22:41:04 +0000 |
commit | 71f4f96249e653ec65f138b52b15d777b342a6a6 (patch) | |
tree | 95552ebe0d8ac8be12dae6683292821ab88268bf | |
parent | 6a1a02ae833a2f90e59a6400cb532e49888a80d7 (diff) | |
download | ruby-71f4f96249e653ec65f138b52b15d777b342a6a6.tar.gz |
* file.c (realpath_rec): use same cache.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | file.c | 6 |
2 files changed, 7 insertions, 3 deletions
@@ -1,4 +1,6 @@ -Mon Mar 15 07:38:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> +Mon Mar 15 07:41:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * file.c (realpath_rec): use same cache. * file.c (realpath_internal): regulate separators in prefix. [ruby-core:28653] @@ -3087,6 +3087,8 @@ rb_file_s_absolute_path(int argc, VALUE *argv) static void realpath_rec(long *prefixlenp, VALUE *resolvedp, char *unresolved, VALUE loopcheck, int strict, int last) { + ID resolving; + CONST_ID(resolving, "resolving"); while (*unresolved) { char *testname = unresolved; char *unresolved_firstsep = rb_path_next(unresolved); @@ -3112,7 +3114,7 @@ realpath_rec(long *prefixlenp, VALUE *resolvedp, char *unresolved, VALUE loopche rb_str_cat(testpath, testname, testnamelen); checkval = rb_hash_aref(loopcheck, testpath); if (!NIL_P(checkval)) { - if (checkval == ID2SYM(rb_intern("resolving"))) { + if (checkval == ID2SYM(resolving)) { errno = ELOOP; rb_sys_fail(RSTRING_PTR(testpath)); } @@ -3140,7 +3142,7 @@ realpath_rec(long *prefixlenp, VALUE *resolvedp, char *unresolved, VALUE loopche volatile VALUE link; char *link_prefix, *link_names; long link_prefixlen; - rb_hash_aset(loopcheck, testpath, ID2SYM(rb_intern("resolving"))); + rb_hash_aset(loopcheck, testpath, ID2SYM(resolving)); link = rb_file_s_readlink(rb_cFile, testpath); link_prefix = RSTRING_PTR(link); link_names = skiproot(link_prefix); |