[Bug libstdc++/83625] New: std::experimental::filesystem::remove lstat()'s before remove() instead of checking errno

chillermillerlong at hotmail dot com gcc-bugzilla@gcc.gnu.org
Sat Dec 30 02:15:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83625

            Bug ID: 83625
           Summary: std::experimental::filesystem::remove lstat()'s before
                    remove() instead of checking errno
           Product: gcc
           Version: 7.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: chillermillerlong at hotmail dot com
  Target Milestone: ---

libstdc++'s std::experimental::filesystem::remove() function currently seems to
be doing an lstat() to check if the path exists before calling remove().
(https://github.com/gcc-mirror/gcc/blob/gcc-7_2_0-release/libstdc%2B%2B-v3/src/filesystem/ops.cc#L1235-L1249)

This could cause the function to report an error if the path is deleted between
the stat() and remove() instead of returning false. Would it make sense to
always attempt remove() and return false if errno == ENOENT instead?


More information about the Gcc-bugs mailing list