Align Alloc Pointer When Transitioning from Buffers to Aligned Allocs
This commit is contained in:
parent
e936b73889
commit
88c2fcd0ee
@ -64,8 +64,19 @@ static void* ZSTD_workspace_reserve(ZSTD_CCtx_workspace* ws, size_t bytes, ZSTD_
|
|||||||
bytes, (BYTE *)alloc - (BYTE *)bottom);
|
bytes, (BYTE *)alloc - (BYTE *)bottom);
|
||||||
assert(phase >= ws->phase);
|
assert(phase >= ws->phase);
|
||||||
if (phase > ws->phase) {
|
if (phase > ws->phase) {
|
||||||
if (ws->phase <= ZSTD_workspace_alloc_buffers) {
|
if (ws->phase < ZSTD_workspace_alloc_buffers &&
|
||||||
|
phase >= ZSTD_workspace_alloc_buffers) {
|
||||||
|
}
|
||||||
|
if (ws->phase < ZSTD_workspace_alloc_aligned &&
|
||||||
|
phase >= ZSTD_workspace_alloc_aligned) {
|
||||||
|
/* If unaligned allocations down from a too-large top have left us
|
||||||
|
* unaligned, we need to realign our alloc ptr. Technically, this
|
||||||
|
* can consume space that is unaccounted for in the neededSpace
|
||||||
|
* calculation. However, I believe this can only happen when the
|
||||||
|
* workspace is too large, and specifically when it is too large
|
||||||
|
* by a larger margin than the space that will be consumed. */
|
||||||
|
/* TODO: cleaner, compiler warning friendly way to do this??? */
|
||||||
|
alloc = (BYTE*)alloc - ((size_t)alloc & (sizeof(U32)-1));
|
||||||
}
|
}
|
||||||
ws->phase = phase;
|
ws->phase = phase;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user