ソースを参照

Prevent handle used for LOG from being inherited by subprocesses

I recently encountered a problem with this because Windows doesn't allow
files to be deleted when there's open handles to them.

Other files opened by leveldb are not affected because by and large they
are using CreateFileA, which does not allow inheritance when
lpSecurityAttributes is null (ref:
https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea)

However, fopen() _does_ allow inheritance, and it needs to be expressly
disabled.
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fopen-wfopen?view=msvc-160
naive_version
Dylan K. Taylor 3年前
コミット
68d14a723a
この署名に対応する既知のキーがデータベースに存在しません GPGキーID: 8927471A91CAFD3D
1個のファイルの変更1行の追加1行の削除
  1. +1
    -1
      util/env_windows.cc

+ 1
- 1
util/env_windows.cc ファイルの表示

@ -622,7 +622,7 @@ class WindowsEnv : public Env {
}
Status NewLogger(const std::string& filename, Logger** result) override {
std::FILE* fp = std::fopen(filename.c_str(), "w");
std::FILE* fp = std::fopen(filename.c_str(), "wN");
if (fp == nullptr) {
*result = nullptr;
return WindowsError(filename, ::GetLastError());

読み込み中…
キャンセル
保存