Skip to content

Commit 8b39a87

Browse files
committed
bugfix: make LoadWallet assigns status always
Although loadwallet() in rpcwallet.cpp assumes LoadWallet() always assign some value to the 'status', but LoadWallet() does not do so in some situation. This fixes above and prevends loadwallet() returns ambiguous error code.
1 parent 564e1ab commit 8b39a87

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

src/wallet/db.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ enum class DatabaseStatus {
212212
FAILED_ALREADY_EXISTS,
213213
FAILED_NOT_FOUND,
214214
FAILED_CREATE,
215+
FAILED_LOAD,
215216
FAILED_VERIFY,
216217
FAILED_ENCRYPT,
217218
};

src/wallet/wallet.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ std::shared_ptr<CWallet> LoadWalletInternal(interfaces::Chain& chain, const std:
212212
std::shared_ptr<CWallet> wallet = CWallet::Create(chain, name, std::move(database), options.create_flags, error, warnings);
213213
if (!wallet) {
214214
error = Untranslated("Wallet loading failed.") + Untranslated(" ") + error;
215+
status = DatabaseStatus::FAILED_LOAD;
215216
return nullptr;
216217
}
217218
AddWallet(wallet);
@@ -223,6 +224,7 @@ std::shared_ptr<CWallet> LoadWalletInternal(interfaces::Chain& chain, const std:
223224
return wallet;
224225
} catch (const std::runtime_error& e) {
225226
error = Untranslated(e.what());
227+
status = DatabaseStatus::FAILED_LOAD;
226228
return nullptr;
227229
}
228230
}
@@ -233,6 +235,7 @@ std::shared_ptr<CWallet> LoadWallet(interfaces::Chain& chain, const std::string&
233235
auto result = WITH_LOCK(g_loading_wallet_mutex, return g_loading_wallet_set.insert(name));
234236
if (!result.second) {
235237
error = Untranslated("Wallet already being loading.");
238+
status = DatabaseStatus::FAILED_LOAD;
236239
return nullptr;
237240
}
238241
auto wallet = LoadWalletInternal(chain, name, load_on_start, options, status, error, warnings);

0 commit comments

Comments
 (0)