Fix handling of 50 move rule and remove a fixme
authorMarco Costalba <mcostalba@gmail.com>
Sat, 25 Sep 2010 10:21:24 +0000 (11:21 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 25 Sep 2010 10:24:20 +0000 (11:24 +0100)
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/position.cpp

index 8cc5fccd0bcc5e8cf51c405637a020929f5f20d3..cb63cf9537775848cdc222856a87dfdddc445ef3 100644 (file)
@@ -1677,7 +1677,6 @@ Value Position::compute_non_pawn_material(Color c) const {
 /// Position::is_draw() tests whether the position is drawn by material,
 /// repetition, or the 50 moves rule. It does not detect stalemates, this
 /// must be done by the search.
 /// Position::is_draw() tests whether the position is drawn by material,
 /// repetition, or the 50 moves rule. It does not detect stalemates, this
 /// must be done by the search.
-// FIXME: Currently we are not handling 50 move rule correctly when in check
 
 bool Position::is_draw() const {
 
 
 bool Position::is_draw() const {
 
@@ -1687,7 +1686,7 @@ bool Position::is_draw() const {
       return true;
 
   // Draw by the 50 moves rule?
       return true;
 
   // Draw by the 50 moves rule?
-  if (st->rule50 > 100 || (st->rule50 == 100 && !is_check()))
+  if (st->rule50 > 99 && (st->rule50 > 100 || !is_mate()))
       return true;
 
   // Draw by repetition?
       return true;
 
   // Draw by repetition?