aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam Weiss <adam@signal11.com>2015-08-12 19:32:20 -0400
committerLuke Dashjr <luke-jr+git@utopios.org>2015-09-22 00:43:13 +0000
commitf171fee035ab4465d8466607af5f54247e14b237 (patch)
treec214f6ca679cfb6c41763d715e63b106d1659eae /src
parentc5b89fe44e73e9b1e33f7a5ce829d8d9b15eb690 (diff)
downloadbitcoin-f171fee035ab4465d8466607af5f54247e14b237.tar.xz
Handle leveldb::DestroyDB() errors on wipe failure
Add error checking to CLevelDBWrapper for errors from leveldb::DestroyDB(). Without it, if unlink() or DeleteFileW() fail to delete files, they will fail silent. If they fail to delete any files, CLevelDBWrapper will silently open and read the existing database. Typically any permissions issues would be caught by leveldb as it churns through many files as part of its compaction process, but it is conceivable that this could cause problems on Windows with anti-virus and indexing software.
Diffstat (limited to 'src')
-rw-r--r--src/leveldbwrapper.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/leveldbwrapper.cpp b/src/leveldbwrapper.cpp
index c353dfa6d9..26cacf95ae 100644
--- a/src/leveldbwrapper.cpp
+++ b/src/leveldbwrapper.cpp
@@ -58,7 +58,8 @@ CLevelDBWrapper::CLevelDBWrapper(const boost::filesystem::path& path, size_t nCa
} else {
if (fWipe) {
LogPrintf("Wiping LevelDB in %s\n", path.string());
- leveldb::DestroyDB(path.string(), options);
+ leveldb::Status result = leveldb::DestroyDB(path.string(), options);
+ HandleError(result);
}
TryCreateDirectory(path);
LogPrintf("Opening LevelDB in %s\n", path.string());