mirror of
https://git.mirrors.martin98.com/https://github.com/gulrak/filesystem
synced 2025-08-12 12:48:59 +08:00
Replace std::shared_ptr to std::unique_ptr
This commit is contained in:
parent
d279a4f73d
commit
7b8cf519f2
@ -2043,7 +2043,13 @@ typedef struct _REPARSE_DATA_BUFFER
|
||||
#endif
|
||||
#endif
|
||||
|
||||
GHC_INLINE std::shared_ptr<REPARSE_DATA_BUFFER> getReparseData(const path& p, std::error_code& ec)
|
||||
template <class T>
|
||||
struct free_deleter
|
||||
{
|
||||
void operator()(T* p) const { std::free(p); }
|
||||
};
|
||||
|
||||
GHC_INLINE std::unique_ptr<REPARSE_DATA_BUFFER, free_deleter<REPARSE_DATA_BUFFER>> getReparseData(const path& p, std::error_code& ec)
|
||||
{
|
||||
std::shared_ptr<void> file(CreateFileW(GHC_NATIVEWP(p), 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, 0), CloseHandle);
|
||||
if (file.get() == INVALID_HANDLE_VALUE) {
|
||||
@ -2051,7 +2057,7 @@ GHC_INLINE std::shared_ptr<REPARSE_DATA_BUFFER> getReparseData(const path& p, st
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<REPARSE_DATA_BUFFER> reparseData((REPARSE_DATA_BUFFER*)std::calloc(1, MAXIMUM_REPARSE_DATA_BUFFER_SIZE), std::free);
|
||||
std::unique_ptr<REPARSE_DATA_BUFFER, free_deleter<REPARSE_DATA_BUFFER>> reparseData(reinterpret_cast<REPARSE_DATA_BUFFER*>(std::calloc(1, MAXIMUM_REPARSE_DATA_BUFFER_SIZE)));
|
||||
ULONG bufferUsed;
|
||||
if (DeviceIoControl(file.get(), FSCTL_GET_REPARSE_POINT, 0, 0, reparseData.get(), MAXIMUM_REPARSE_DATA_BUFFER_SIZE, &bufferUsed, 0)) {
|
||||
return reparseData;
|
||||
|
Loading…
x
Reference in New Issue
Block a user