Log actual error codes from CreateFileW failures.
authorCarl Hetherington <cth@carlh.net>
Sun, 1 May 2022 18:44:34 +0000 (20:44 +0200)
committerCarl Hetherington <cth@carlh.net>
Sun, 1 May 2022 18:44:34 +0000 (20:44 +0200)
src/KM_fileio.cpp

index c70002d0324a08af0fcfd4bd15e47e8acbf4af6f..7f590a886a789d54deca978fdbd97f5cc69c7b26 100644 (file)
@@ -820,11 +820,17 @@ Kumu::FileReader::OpenRead(const std::string& filename) const
                          );
 
   delete[] buffer;
+  HRESULT const last_error = GetLastError();
 
   ::SetErrorMode(prev);
 
-  return ( m_Handle == INVALID_HANDLE_VALUE ) ?
-    Kumu::RESULT_FILEOPEN : Kumu::RESULT_OK;
+  if (m_Handle == INVALID_HANDLE_VALUE)
+    {
+      DefaultLogSink().Error("CreateFileW failed: %lu\n", last_error);
+      return Kumu::RESULT_FILEOPEN;
+    }
+
+  return Kumu::RESULT_OK;
 }
 
 //
@@ -954,11 +960,15 @@ Kumu::FileWriter::OpenWrite(const std::string& filename)
                          );
 
   delete[] buffer;
+  HRESULT const last_error = GetLastError();
 
   ::SetErrorMode(prev);
 
-  if ( m_Handle == INVALID_HANDLE_VALUE )
-    return Kumu::RESULT_FILEOPEN;
+  if (m_Handle == INVALID_HANDLE_VALUE)
+    {
+      DefaultLogSink().Error("CreateFileW failed: %lu\n", last_error);
+      return Kumu::RESULT_FILEOPEN;
+    }
 
   m_IOVec = new h__iovec;
   return Kumu::RESULT_OK;
@@ -990,11 +1000,15 @@ Kumu::FileWriter::OpenModify(const std::string& filename)
                          );
 
   delete[] buffer;
+  HRESULT const last_error = GetLastError();
 
   ::SetErrorMode(prev);
 
-  if ( m_Handle == INVALID_HANDLE_VALUE )
-    return Kumu::RESULT_FILEOPEN;
+  if (m_Handle == INVALID_HANDLE_VALUE)
+    {
+      DefaultLogSink().Error("CreateFileW failed: %lu\n", last_error);
+      return Kumu::RESULT_FILEOPEN;
+    }
 
   m_IOVec = new h__iovec;
   return Kumu::RESULT_OK;