Quellcode durchsuchen

Second attempt at fixing CfAPI wrapper build in Win32 mode

MSVC having so useless error messages it didn't quite point to the root
cause of the issue... it turns out that through the maze of macros
defined in the windows API, there's one which impacted the function
pointer definition of CfCloseHandle which would then not convert to
FileHandle::Deleter as expected. So I end up wrapping it in a lambda to
help... luckily this kind of lambdas decay into a simple function
pointer so there's likely no overhead it's just to coerce the compiler
into doing the right thing.

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
Kevin Ottens vor 5 Jahren
Ursprung
Commit
2d8eb19ee5
1 geänderte Dateien mit 1 neuen und 1 gelöschten Zeilen
  1. 1 1
      src/libsync/vfs/cfapi/cfapiwrapper.cpp

+ 1 - 1
src/libsync/vfs/cfapi/cfapiwrapper.cpp

@@ -346,7 +346,7 @@ OCC::CfApiWrapper::FileHandle OCC::CfApiWrapper::handleForPath(const QString &pa
         HANDLE handle = nullptr;
         HANDLE handle = nullptr;
         const qint64 openResult = CfOpenFileWithOplock(path.toStdWString().data(), CF_OPEN_FILE_FLAG_NONE, &handle);
         const qint64 openResult = CfOpenFileWithOplock(path.toStdWString().data(), CF_OPEN_FILE_FLAG_NONE, &handle);
         if (openResult == S_OK) {
         if (openResult == S_OK) {
-            return {handle, CfCloseHandle};
+            return {handle, [](HANDLE h) { CfCloseHandle(h); }};
         }
         }
     } else {
     } else {
         const auto handle = CreateFile(path.toStdWString().data(), 0, 0, nullptr,
         const auto handle = CreateFile(path.toStdWString().data(), 0, 0, nullptr,