tests: Accidentally found a couple buffer overruns
- Off-by-one in test_btree_find_general[_sparse]_fuzz Because we can only create named btrees via splitting, these always start with one entry. If all operations are randomly selected to be splits, this can lead to an overflow of the sim buffer (sounds unlikely, but relatively easily for small N). The fix is to use a `for (lfs3_size_t i = 1; i < N; i++)` loop to account for the initial entry. Note we already use this in the test_btree_split_* tests. An alternative is allocating space for N+1 entries, but this seems unintuitive with N usually being associated with the upper bound on btree size. - Off-by-one in our sim rename pattern When renaming, we don't bother to update sim_size, because after the rename the sim_size size will be unchanged. But this means the sim_size is out-of-date during the memmove that reinserts the renamed entry. Buffer overflow! To fix we just need to use sim_size-1 to account for the temporarily deleted entry. This is messy C code, so not surprised it went unnoticed, even though this pattern ended up in quite a few tests. Found while running with HEAP=1. This was just intended to test HEAP=1, but I guess the injected heap hooks result in a more fragile heap? They increase all allocations by one word, and maybe this reduces alignment padding? Not exactly sure. But it's a good argument for maybe adding heap canaries in the future. Previously we ran Valgrind on all tests, but it's unclear if this will still be reasonable with the number of tests we have now.
This commit is contained in:
+20
-20
@@ -360,7 +360,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -703,9 +703,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
@@ -1301,11 +1301,11 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -1787,13 +1787,13 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -2327,7 +2327,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2672,9 +2672,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
@@ -3272,11 +3272,11 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -3759,13 +3759,13 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
|
|||||||
@@ -4015,7 +4015,7 @@ code = '''
|
|||||||
memcpy(&sim_names[0], "___", 3);
|
memcpy(&sim_names[0], "___", 3);
|
||||||
|
|
||||||
uint32_t prng = SEED;
|
uint32_t prng = SEED;
|
||||||
for (lfs3_size_t i = 0; i < N; i++) {
|
for (lfs3_size_t i = 1; i < N; i++) {
|
||||||
// choose a pseudo-random op
|
// choose a pseudo-random op
|
||||||
uint8_t op = TEST_PRNG(&prng) % 3;
|
uint8_t op = TEST_PRNG(&prng) % 3;
|
||||||
// choose a pseudo-random bid
|
// choose a pseudo-random bid
|
||||||
@@ -4203,7 +4203,7 @@ code = '''
|
|||||||
sim_weights[0] = W;
|
sim_weights[0] = W;
|
||||||
|
|
||||||
uint32_t prng = SEED;
|
uint32_t prng = SEED;
|
||||||
for (lfs3_size_t i = 0; i < N; i++) {
|
for (lfs3_size_t i = 1; i < N; i++) {
|
||||||
// choose a pseudo-random op
|
// choose a pseudo-random op
|
||||||
uint8_t op = TEST_PRNG(&prng) % 3;
|
uint8_t op = TEST_PRNG(&prng) % 3;
|
||||||
// choose a pseudo-random bid
|
// choose a pseudo-random bid
|
||||||
|
|||||||
+10
-10
@@ -2941,7 +2941,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3302,9 +3302,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
@@ -4185,11 +4185,11 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -4818,13 +4818,13 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
|
|||||||
@@ -6717,7 +6717,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -6883,7 +6883,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
+10
-10
@@ -146,7 +146,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -406,9 +406,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
@@ -1063,11 +1063,11 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -1602,13 +1602,13 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
|
|||||||
@@ -2796,9 +2796,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
@@ -3010,9 +3010,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-10
@@ -3337,7 +3337,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3692,9 +3692,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
@@ -4300,11 +4300,11 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -4781,13 +4781,13 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
|
|||||||
+10
-10
@@ -712,7 +712,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1139,9 +1139,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
@@ -1611,11 +1611,11 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -2147,13 +2147,13 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
|
|||||||
+10
-10
@@ -174,7 +174,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -442,9 +442,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
@@ -833,11 +833,11 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -1288,13 +1288,13 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
|
|||||||
@@ -11126,11 +11126,11 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -11580,13 +11580,13 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
|
|||||||
+10
-10
@@ -9498,7 +9498,7 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -9835,9 +9835,9 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
}
|
}
|
||||||
@@ -10427,11 +10427,11 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
@@ -10915,13 +10915,13 @@ code = '''
|
|||||||
}
|
}
|
||||||
// then insert
|
// then insert
|
||||||
memmove(&sim[k+1], &sim[k],
|
memmove(&sim[k+1], &sim[k],
|
||||||
(sim_size-k)*sizeof(lfs3_size_t));
|
(sim_size-1-k)*sizeof(lfs3_size_t));
|
||||||
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
memmove(&sim_prngs[k+1], &sim_prngs[k],
|
||||||
(sim_size-k)*sizeof(uint32_t));
|
(sim_size-1-k)*sizeof(uint32_t));
|
||||||
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
memmove(&sim_isstickys[k+1], &sim_isstickys[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
memmove(&sim_isdirs[k+1], &sim_isdirs[k],
|
||||||
(sim_size-k)*sizeof(bool));
|
(sim_size-1-k)*sizeof(bool));
|
||||||
sim[k] = y;
|
sim[k] = y;
|
||||||
sim_prngs[k] = wprng;
|
sim_prngs[k] = wprng;
|
||||||
sim_isstickys[k] = sticky;
|
sim_isstickys[k] = sticky;
|
||||||
|
|||||||
Reference in New Issue
Block a user