#include <algorithm> // For std::count
#include <cassert>
+#include <cstring> // For memset
#include <iostream>
#include "movegen.h"
// Thread c'tor starts a newly-created thread of execution that will call
// the the virtual function idle_loop(), going immediately to sleep.
-Thread::Thread() : splitPoints() {
+Thread::Thread() /* : splitPoints() */ { // Value-initialization bug in MSVC
searching = exit = false;
maxPly = splitPointsSize = 0;
sp.cutoff = false;
sp.ss = ss;
+ memset(sp.slavesPositions, 0, sizeof(sp.slavesPositions));
+
// Try to allocate available threads and ask them to start searching setting
// 'searching' flag. This must be done under lock protection to avoid concurrent
// allocation of the same slave by another master.