From f501b24b8886605949cd9b7880b8e4ce8e866e9d Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Wed, 7 Dec 2022 17:33:21 -0800 Subject: fixed a bug in the remove_vectors function --- chess.c | 2 +- vector.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/chess.c b/chess.c index 099c78c..a0904df 100644 --- a/chess.c +++ b/chess.c @@ -236,7 +236,7 @@ vectorp_t get_moves_final(int** board, vector_t position, piece_t piece) { //remove the piece from where it was tempBoard[position.mx][position.my] = 0; if(is_in_check(tempBoard, color)) { - invalidMoves[invalidMovesCount]; + invalidMoves[invalidMovesCount] = i; invalidMovesCount++; } free(tempBoard); diff --git a/vector.c b/vector.c index 2741a47..6ab3bf2 100644 --- a/vector.c +++ b/vector.c @@ -26,13 +26,17 @@ vectorp_t remove_vectors(vectorp_t vectorp, int* indexes, int indexCount) { vector_t* vectors = malloc((vectorp.length - indexCount) * sizeof(vector_t)); int correctedIndex = 0; for(int i = 0; i < vectorp.length - indexCount; i++) { + int toRemove = 0; for(int j = 0; j < indexCount; j++) { if(i == indexes[j]) { - continue; + toRemove = 1; + break; } } - vectors[correctedIndex] = vectorp.vectors[i]; - correctedIndex++; + if(!toRemove) { + vectors[correctedIndex] = vectorp.vectors[i]; + correctedIndex++; + } } return init_vectorp(vectors, vectorp.length - indexCount); } -- cgit v1.3.1