mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-20 17:16:33 +08:00
Fix a crash due to a broken Book::open()
Bug introduced in 9dcc2aad98
We can be asked to open a non-exsistent file,
in this case we should gracefully handle the
case and silently return instead of exiting.
Bug discovered and bisected down by Joona.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
22
src/book.cpp
22
src/book.cpp
@@ -365,18 +365,20 @@ void Book::open(const string& fName) {
|
||||
fileName = fName;
|
||||
ifstream::open(fileName.c_str(), ifstream::in | ifstream::binary);
|
||||
|
||||
if (is_open())
|
||||
{
|
||||
// Get the book size in number of entries
|
||||
seekg(0, ios::end);
|
||||
bookSize = long(tellg()) / EntrySize;
|
||||
seekg(0, ios::beg);
|
||||
// Silently return when asked to open a non-exsistent file
|
||||
if (!is_open())
|
||||
return;
|
||||
|
||||
if (good())
|
||||
return;
|
||||
// Get the book size in number of entries
|
||||
seekg(0, ios::end);
|
||||
bookSize = long(tellg()) / EntrySize;
|
||||
seekg(0, ios::beg);
|
||||
|
||||
if (!good())
|
||||
{
|
||||
cerr << "Failed to open book file " << fileName << endl;
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
cerr << "Failed to open book file " << fileName << endl;
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user