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.
This commit is contained in:
Christopher Haster
2023-03-13 03:57:50 -05:00
parent 8732904ef6
commit c55cc4d010
+8 -6
View File
@@ -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;
}