https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91947
Bug ID: 91947 Summary: std::filesystem::file_size will return wrong value on 32bit platforms with large files support Product: gcc Version: 8.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: fregloin at gmail dot com Target Milestone: --- std::filesystem::file_size will return wrong value on 32bit platforms with large files support /trunk/libstdc++-v3/src/filesystem/ops.cc /trunk/libstdc++-v3/src/filesystem/std-ops.cc (the same problem) struct S field `size` of type `size_t`. When it casted from uintmax_t to size_t on 32bit platform, the result of this function will be wrong. fs::file_size(const path& p, error_code& ec) noexcept { struct S { S(const stat_type& st) : type(make_file_type(st)), size(st.st_size) { } } S() : type(file_type::not_found) { } file_type type; size_t size; ... }; stat.off_t type is off64_t when large file support is enabled.