mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Get rid of the redundant stat() in rb_check_realpath_internal
This commit is contained in:
parent
167d139487
commit
2c6512fe67
Notes:
git
2020-07-07 00:27:12 +09:00
1 changed files with 3 additions and 1 deletions
4
file.c
4
file.c
|
@ -4389,7 +4389,6 @@ rb_check_realpath_internal(VALUE basedir, VALUE path, rb_encoding *origenc, enum
|
|||
VALUE unresolved_path;
|
||||
char *resolved_ptr = NULL;
|
||||
VALUE resolved;
|
||||
struct stat st;
|
||||
|
||||
if (mode == RB_REALPATH_DIR) {
|
||||
return rb_check_realpath_emulate(basedir, path, origenc, mode);
|
||||
|
@ -4420,14 +4419,17 @@ rb_check_realpath_internal(VALUE basedir, VALUE path, rb_encoding *origenc, enum
|
|||
resolved = ospath_new(resolved_ptr, strlen(resolved_ptr), rb_filesystem_encoding());
|
||||
free(resolved_ptr);
|
||||
|
||||
# if !defined(__LINUX__) && !defined(__APPLE__)
|
||||
/* As `resolved` is a String in the filesystem encoding, no
|
||||
* conversion is needed */
|
||||
struct stat st;
|
||||
if (stat_without_gvl(RSTRING_PTR(resolved), &st) < 0) {
|
||||
if (mode == RB_REALPATH_CHECK) {
|
||||
return Qnil;
|
||||
}
|
||||
rb_sys_fail_path(unresolved_path);
|
||||
}
|
||||
# endif
|
||||
|
||||
if (origenc && origenc != rb_enc_get(resolved)) {
|
||||
if (!rb_enc_str_asciionly_p(resolved)) {
|
||||
|
|
Loading…
Reference in a new issue