diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 205c1dd9db1..7ae04d07866 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,8 @@ +2007-06-16 Vladimir Prus + + * cppfiles.c (open_file): Prevent the call + for stat from overwriting errno. + 2007-06-09 Vladimir Prus * cppfiles.c (open_file): Account for the diff --git a/libcpp/files.c b/libcpp/files.c index b20c38e8d87..dbd25f27203 100644 --- a/libcpp/files.c +++ b/libcpp/files.c @@ -239,6 +239,9 @@ open_file (_cpp_file *file) if (stat (file->path, &file->st) == 0 && S_ISDIR (file->st.st_mode)) errno = ENOENT; + else + /* The call to stat may have reset errno. */ + errno = EACCESS; } #endif else if (errno == ENOTDIR)