diff options
author | Yuta Saito <kateinoigakukun@gmail.com> | 2022-03-17 11:05:15 +0000 |
---|---|---|
committer | Yuta Saito <kateinoigakukun@gmail.com> | 2022-04-03 01:13:16 +0900 |
commit | 44d0caa1ca56b17bf0ed9e3daf446c1eaacae108 (patch) | |
tree | 4c44fccb38118f611195c25e5f52143fa4132f99 | |
parent | 07acd6006c69370c7af4ca50221f1a8166d78e3f (diff) |
dir.c: refresh pathtype when emulating `IFTODT` in `glob_helper`
When using `IFTODT` defined in libc, `dirent.d_type` oriented pathtype
is compatible with `IFTODT(stat.st_mode)`. However they are not
compatible when emulating `IFTODT`, so `glob_helper` has to stat instead
of reusing dirent result by passing unknown pathtype to `glob_helper`.
This is a follow-up fix of 0c90ca4dd0abbd28d7bb34b9241d93995ab9cfb7
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/5680
-rw-r--r-- | dir.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -2148,7 +2148,7 @@ dirent_copy(const struct dirent *dp, rb_dirent_t *rdp) newrdp->d_altname = dp->d_altname; #endif } -#ifdef DT_UNKNOWN +#if !EMULATE_IFTODT newrdp->d_type = dp->d_type; #else newrdp->d_type = 0; @@ -2470,7 +2470,7 @@ glob_helper( break; } name = buf + pathlen + (dirsep != 0); -#ifdef DT_UNKNOWN +#if !EMULATE_IFTODT if (dp->d_type != DT_UNKNOWN) { /* Got it. We need no more lstat. */ new_pathtype = dp->d_type; |