Normalize file system path. (#9463)

This commit is contained in:
Jiaming Yuan
2023-08-11 21:26:46 +08:00
committed by GitHub
parent bdc1a3c178
commit bb56183396
7 changed files with 137 additions and 98 deletions

View File

@@ -28,7 +28,7 @@
#include <cstddef> // for size_t
#include <cstdint> // for int32_t, uint32_t
#include <cstring> // for memcpy
#include <filesystem> // for filesystem
#include <filesystem> // for filesystem, weakly_canonical
#include <fstream> // for ifstream
#include <iterator> // for distance
#include <limits> // for numeric_limits
@@ -154,7 +154,8 @@ std::string LoadSequentialFile(std::string uri, bool stream) {
// Open in binary mode so that correct file size can be computed with
// seekg(). This accommodates Windows platform:
// https://docs.microsoft.com/en-us/cpp/standard-library/basic-istream-class?view=vs-2019#seekg
std::ifstream ifs(std::filesystem::u8path(uri), std::ios_base::binary | std::ios_base::in);
auto path = std::filesystem::weakly_canonical(std::filesystem::u8path(uri));
std::ifstream ifs(path, std::ios_base::binary | std::ios_base::in);
if (!ifs) {
// https://stackoverflow.com/a/17338934
OpenErr();