Fixed crash on enumerate + rvalue
This commit is contained in:
@@ -64,8 +64,8 @@ public:
|
||||
|
||||
GetStatResult getStat(AbsPathView path) const override;
|
||||
|
||||
cppcoro::generator<EnumerateEntry> enumerate(AbsPathView path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPathView path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerate(AbsPath path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPath path) const override;
|
||||
|
||||
private:
|
||||
struct PackData
|
||||
|
||||
@@ -25,8 +25,8 @@ public:
|
||||
|
||||
GetStatResult getStat(AbsPathView path) const override;
|
||||
|
||||
cppcoro::generator<EnumerateEntry> enumerate(AbsPathView path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPathView path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerate(AbsPath path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPath path) const override;
|
||||
|
||||
ConvertToNativePathResult convertToNativePath(AbsPathView path) const override;
|
||||
|
||||
|
||||
@@ -117,8 +117,12 @@ public:
|
||||
|
||||
virtual SetWriteTimeResult setWriteTime(AbsPathView path, time_t time) = 0;
|
||||
|
||||
virtual cppcoro::generator<EnumerateEntry> enumerate(AbsPathView path) const = 0;
|
||||
virtual cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPathView path) const = 0;
|
||||
//The AbsPath is a copy, because there are lifetime subtleties when using coroutines.
|
||||
//In particular, without pass-by-value, this would crash because nobody is storing the rvalue:
|
||||
// for (auto e: fs.enumerate(path + "other folder"))
|
||||
// {}
|
||||
virtual cppcoro::generator<EnumerateEntry> enumerate(AbsPath path) const = 0;
|
||||
virtual cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPath path) const = 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -33,8 +33,8 @@ public:
|
||||
|
||||
virtual GetStatResult getStat(AbsPathView i_path) const = 0;
|
||||
|
||||
virtual cppcoro::generator<EnumerateEntry> enumerate(AbsPathView i_path) const = 0;
|
||||
virtual cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPathView i_path) const = 0;
|
||||
virtual cppcoro::generator<EnumerateEntry> enumerate(AbsPath i_path) const = 0;
|
||||
virtual cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPath i_path) const = 0;
|
||||
|
||||
virtual ConvertToNativePathResult convertToNativePath(AbsPathView i_path) const = 0;
|
||||
|
||||
|
||||
@@ -50,8 +50,8 @@ public:
|
||||
|
||||
GetStatResult getStat(AbsPathView path) const override;
|
||||
|
||||
cppcoro::generator<EnumerateEntry> enumerate(AbsPathView path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPathView path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerate(AbsPath path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPath path) const override;
|
||||
|
||||
AbsPath getCurrentFolder() const;
|
||||
tl::result<Error> setCurrentFolder(AbsPathView path);
|
||||
|
||||
@@ -37,8 +37,8 @@ public:
|
||||
|
||||
GetStatResult getStat(AbsPathView path) const override;
|
||||
|
||||
cppcoro::generator<EnumerateEntry> enumerate(AbsPathView path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPathView path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerate(AbsPath path) const override;
|
||||
cppcoro::generator<EnumerateEntry> enumerateRecursively(AbsPath path) const override;
|
||||
|
||||
tl::result<AbsPath, Error> convertToNativePath(AbsPathView path) const override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user