Fix sigkill 9 running out of memory issue
This commit is contained in:
@@ -90,8 +90,7 @@ impl Game {
|
||||
|
||||
pub fn unmake_move(&mut self) {
|
||||
let board = &mut self.board;
|
||||
let move_parameters =
|
||||
std::mem::take(&mut self.history.pop_move_parameters()).unwrap_or_default();
|
||||
let move_parameters = &mut self.history.pop_move_parameters().unwrap_or_default();
|
||||
let color_before_move = board.state.change_side();
|
||||
board.state.revert_full_move(color_before_move);
|
||||
board.state.en_passant_square = move_parameters.en_passant_square;
|
||||
|
||||
@@ -10,16 +10,15 @@ pub fn driver(game: &mut Game, nodes: &mut u64, depth: u8) {
|
||||
let pseudo_moves = game.board.pseudo_moves_all();
|
||||
|
||||
for mv in pseudo_moves {
|
||||
let original_board = game.board.clone();
|
||||
game.make_move(&mv);
|
||||
|
||||
if game.board.king_under_check(color) {
|
||||
game.board = original_board;
|
||||
game.unmake_move();
|
||||
continue;
|
||||
}
|
||||
|
||||
driver(game, nodes, depth - 1);
|
||||
game.board = original_board;
|
||||
game.unmake_move();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +73,6 @@ mod tests {
|
||||
|
||||
fn perft(fen: &str, depth: u8) -> Result<u64, String> {
|
||||
init_attacks();
|
||||
|
||||
let mut game = from_fen(fen)?;
|
||||
let mut nodes = 0;
|
||||
driver(&mut game, &mut nodes, depth);
|
||||
@@ -85,7 +83,6 @@ mod tests {
|
||||
#[test]
|
||||
fn test_perft_1() -> Result<(), String> {
|
||||
init_attacks();
|
||||
|
||||
assert_eq!(perft(FEN_PERFT[0], 5)?, 4865609);
|
||||
|
||||
Ok(())
|
||||
@@ -94,7 +91,6 @@ mod tests {
|
||||
#[test]
|
||||
fn test_perft_2() -> Result<(), String> {
|
||||
init_attacks();
|
||||
|
||||
assert_eq!(perft(FEN_PERFT[1], 5)?, 193690690);
|
||||
|
||||
Ok(())
|
||||
@@ -103,7 +99,6 @@ mod tests {
|
||||
#[test]
|
||||
fn test_perft_3() -> Result<(), String> {
|
||||
init_attacks();
|
||||
|
||||
assert_eq!(perft(FEN_PERFT[2], 5)?, 674624);
|
||||
|
||||
Ok(())
|
||||
@@ -112,7 +107,6 @@ mod tests {
|
||||
#[test]
|
||||
fn test_perft_4() -> Result<(), String> {
|
||||
init_attacks();
|
||||
|
||||
assert_eq!(perft(FEN_PERFT[3], 5)?, 15833292);
|
||||
|
||||
Ok(())
|
||||
@@ -121,7 +115,6 @@ mod tests {
|
||||
#[test]
|
||||
fn test_perft_5() -> Result<(), String> {
|
||||
init_attacks();
|
||||
|
||||
assert_eq!(perft(FEN_PERFT[4], 5)?, 89941194);
|
||||
|
||||
Ok(())
|
||||
@@ -130,7 +123,6 @@ mod tests {
|
||||
#[test]
|
||||
fn test_perft_6() -> Result<(), String> {
|
||||
init_attacks();
|
||||
|
||||
assert_eq!(perft(FEN_PERFT[5], 5)?, 164075551);
|
||||
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user