From 2155fb78256204aae5aa80946dfe7d8d9c6e2397 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Thu, 7 May 2009 09:27:38 +0200 Subject: [PATCH] Be sure book file is closed before we leave Move closing of file in Book destructor. This guarantees us against leaving the file open under any case and simplifies also Book use. Signed-off-by: Marco Costalba --- src/book.cpp | 13 +++++++++++-- src/book.h | 2 +- src/search.cpp | 6 +----- src/uci.cpp | 1 - 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/book.cpp b/src/book.cpp index 8e4778ee..c69eab73 100644 --- a/src/book.cpp +++ b/src/book.cpp @@ -344,10 +344,21 @@ namespace { //// +/// Destructor. Be sure file is closed before we leave. + +Book::~Book() { + + close(); +} + + /// Book::open() opens a book file with a given file name void Book::open(const string& fName) { + // Close old file before opening the new + close(); + fileName = fName; ifstream::open(fileName.c_str(), ifstream::in | ifstream::binary); if (!is_open()) @@ -361,7 +372,6 @@ void Book::open(const string& fName) { if (!good()) { cerr << "Failed to open book file " << fileName << endl; - close(); exit(EXIT_FAILURE); } } @@ -479,7 +489,6 @@ void Book::read_entry(BookEntry& entry, int idx) { if (!good()) { cerr << "Failed to read book entry at index " << idx << endl; - close(); exit(EXIT_FAILURE); } } diff --git a/src/book.h b/src/book.h index e70bd0f1..740ef749 100644 --- a/src/book.h +++ b/src/book.h @@ -53,8 +53,8 @@ struct BookEntry { }; class Book : private std::ifstream { - public: + ~Book(); void open(const std::string& fName); void close(); const std::string file_name() const; diff --git a/src/search.cpp b/src/search.cpp index 22bfe8d6..64863be1 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -371,10 +371,8 @@ void think(const Position &pos, bool infinite, bool ponder, int side_to_move, { Move bookMove; if (get_option_value_string("Book File") != OpeningBook.file_name()) - { - OpeningBook.close(); OpeningBook.open("book.bin"); - } + bookMove = OpeningBook.get_move(pos); if (bookMove != MOVE_NONE) { @@ -545,7 +543,6 @@ void think(const Position &pos, bool infinite, bool ponder, int side_to_move, if (Quit) { - OpeningBook.close(); stop_threads(); quit_eval(); exit(0); @@ -2561,7 +2558,6 @@ namespace { command = "quit"; if(command == "quit") { - OpeningBook.close(); stop_threads(); quit_eval(); exit(0); diff --git a/src/uci.cpp b/src/uci.cpp index c9120ddb..9c13eff7 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -119,7 +119,6 @@ namespace { if (token == "quit") { - OpeningBook.close(); stop_threads(); quit_eval(); exit(0); -- 2.39.2