summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2022-12-07 17:33:21 -0800
committerKai Stevenson <kai@kaistevenson.com>2022-12-07 17:33:21 -0800
commitf501b24b8886605949cd9b7880b8e4ce8e866e9d (patch)
treed9ba24521a8988592b062e080d0dda93d9a21e81
parentc57fdac8fb91a29205bda4a8d8a6f91f4c1ec172 (diff)
fixed a bug in the remove_vectors function
-rw-r--r--chess.c2
-rw-r--r--vector.c10
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);
}