From c55cc4d0107e15b5004539ea87a5a4988e03d2cc Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Mon, 13 Mar 2023 03:57:50 -0500 Subject: [PATCH] Fixed memcpy/memmove mistake in btree tests A classic C footgun, overlapping mempcpys, that somtimes only fail when optimizations are enabled. Adopting memmove as needed. --- tests/test_btree.toml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/test_btree.toml b/tests/test_btree.toml index ce9db842..b781d4e1 100644 --- a/tests/test_btree.toml +++ b/tests/test_btree.toml @@ -449,9 +449,10 @@ code = ''' &alphas[i % 26], 1) => 0; // add to sim - memcpy(&sim[id+1], &sim[id], sim_size-id); + memmove(&sim[id+1], &sim[id], sim_size-id); sim[id] = alphas[i % 26]; sim_size += 1; + printf("%c\n", alphas[i % 26]); } // check that btree matches sim @@ -493,6 +494,7 @@ code = ''' // clean up sim free(sim); + lfs_deinit(&lfs) => 0; } ''' @@ -615,8 +617,8 @@ code = ''' &alphas[i % 26], 1) => 0; // add to sim - memcpy(&sim[id+1], &sim[id], sim_size-id); - memcpy(&sim_weights[id+1], &sim_weights[id], + memmove(&sim[id+1], &sim[id], sim_size-id); + memmove(&sim_weights[id+1], &sim_weights[id], (sim_size-id)*sizeof(lfs_size_t)); sim[id] = alphas[i % 26]; sim_weights[id] = weight; @@ -1756,7 +1758,7 @@ code = ''' lfsr_btree_pop(&lfs, &btree, id) => 0; // remove from sim - memcpy(&sim[id], &sim[id+1], sim_size-(id+1)); + memmove(&sim[id], &sim[id+1], sim_size-(id+1)); sim_size -= 1; } @@ -1979,8 +1981,8 @@ code = ''' lfsr_btree_pop(&lfs, &btree, weighted_id+sim_weights[id]-1) => 0; // remove from sim - memcpy(&sim[id], &sim[id+1], sim_size-(id+1)); - memcpy(&sim_weights[id], &sim_weights[id+1], + memmove(&sim[id], &sim[id+1], sim_size-(id+1)); + memmove(&sim_weights[id], &sim_weights[id+1], (sim_size-(id+1))*sizeof(lfs_size_t)); sim_size -= 1; }