Pārlūkot izejas kodu

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
pull/1/head
Dylan K. Taylor pirms 3 gadiem
vecāks
revīzija
68d14a723a
Šim parakstam datu bāzē netika atrasta zināma atslēga GPG atslēgas ID: 8927471A91CAFD3D
1 mainītis faili ar 1 papildinājumiem un 1 dzēšanām
  1. +1
    -1
      util/env_windows.cc

+ 1
- 1
util/env_windows.cc Parādīt failu

@ -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());

Notiek ielāde…
Atcelt
Saglabāt