X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftt.cpp;h=20ac1608e2fee1eb0e1338c3dbbe940275cc9f36;hp=b730dbeb63bafd6adc78424f8aba0ceb3983a22d;hb=6849f0800e82845271ad5888600c141857e744ec;hpb=23db43e698cfc697779a708f1dea43496c549c1d diff --git a/src/tt.cpp b/src/tt.cpp index b730dbeb..20ac1608 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -24,6 +24,7 @@ #include #include +#include #include "tt.h" @@ -54,24 +55,25 @@ void TranspositionTable::set_size(size_t mbSize) { size_t newSize = 1024; - // Transposition table consists of clusters and - // each cluster consists of ClusterSize number of TTEntries. - // Each non-empty entry contains information of exactly one position. - // newSize is the number of clusters we are going to allocate. - while ((2 * newSize) * sizeof(TTCluster) <= (mbSize << 20)) + // Transposition table consists of clusters and each cluster consists + // of ClusterSize number of TTEntries. Each non-empty entry contains + // information of exactly one position and newSize is the number of + // clusters we are going to allocate. + while (2ULL * newSize * sizeof(TTCluster) <= (mbSize << 20)) newSize *= 2; if (newSize != size) { size = newSize; delete [] entries; - entries = new TTCluster[size]; + entries = new (std::nothrow) TTCluster[size]; if (!entries) { std::cerr << "Failed to allocate " << mbSize << " MB for transposition table." << std::endl; - Application::exit_with_failure(); + exit(EXIT_FAILURE); } + clear(); } }