qt: Fix random segfault when closing "Choose data directory" dialog

The `pickDataDirectory()` function was calling `exit(0)` to quit
the application when the user closes the dialog without choosing
a data directory.

This is a bad idea because a background thread is created (to
check free space on the drive of the currently selected datadir).
The thread is not stopped and unwound properly, resulting in a potential
race condition somewhere deep in Qt.

So replace the `exit()` by a boolean return value, and let the
stack unwind normally.
This commit is contained in:
Wladimir J. van der Laan
2016-08-18 16:58:04 +02:00
committed by Pieter Wuille
parent 75f2065293
commit 1db3352cc6
3 changed files with 10 additions and 5 deletions

View File

@@ -578,7 +578,8 @@ int main(int argc, char *argv[])
/// 5. Now that settings and translations are available, ask user for data directory
// User language is set up: pick a data directory
Intro::pickDataDirectory();
if (!Intro::pickDataDirectory())
return 0;
/// 6. Determine availability of data directory and parse bitcoin.conf
/// - Do not call GetDataDir(true) before this step finishes