LearnBitcoin

Bitcoin Dev Archive 2013

on CDB::Rewrite()

2 messages, 3 to 4 Oct 2013. Started by Ron.

Ron, Olivier Langlois

Permalink Original thread on gnusha.org

Ron permalink original

I only bring this up here since I can't raise https://bitcointalk.org? Perhaps it runs on the silk road servers:)

Upon looking at the 0.8.5 & earlier code for CDB:Rewrite(), in the files db.h and db.cpp, you will notice that in db.h it is declared bool static, but in db.cpp it isn't. Is this a problem? Or a feature? Or nothing at all?

Furthermore, it is called only in wallet.cpp -->CWallet::EncryptWallet() but its return value is ignored? Again, intentional or a bug or a feature or a ...? Now CWallet::EncryptWallet() is called by AskPassphraseDialog::accept() and WalletModel::setWalletEncrypted()and they seem very interested in what  CWallet::EncryptWallet() returns. Could this be involved in some old issue with wallet encryption on bitcoin-qt 0.8.1?

There seems to be plenty of this kind of "suspicious" code to ferret about in, with one's IDE during quiet moments. Amusing is to follow return 0 and return 1 to try and infer their meaning, their intent?

Ron

Olivier Langlois in reply to Ron permalink original
Quoted text (4 lines)
> Upon looking at the 0.8.5 & earlier code for CDB:Rewrite(), in the
> files db.h and db.cpp, you will notice that in db.h it is declared
> bool static, but in db.cpp it isn't. Is this a problem? Or a feature?
> Or nothing at all?

It is perfect C++ code.

Quoted text (3 lines)
> Furthermore, it is called only in wallet.cpp
> -->CWallet::EncryptWallet() but its return value is ignored? Again,
> intentional or a bug or a feature or a ...?

possibly a minor bug. Minor because over 99% of the time it is called, the Rewrite() function will succeed.

Maybe CWallet::EncryptWallet() should return false to its callers when CDB::Rewrite fails.