Fix off-by-one in dlist allocation when checking whether to allocate a new block. This fixes segfaults in dlist functions that occur on applications making heavy use of display lists that exceed BLOCK_SIZE.

This commit is contained in:
purplerain 2024-03-07 06:43:52 +00:00
parent 921461fcd8
commit 5cf6ab0cf4
Signed by: purplerain
GPG Key ID: F42C07F07E2E35B7
1 changed files with 1 additions and 1 deletions

View File

@ -1220,7 +1220,7 @@ dlist_alloc(struct gl_context *ctx, OpCode opcode, GLuint bytes, bool align8)
ctx->ListState.CurrentPos++;
}
if (ctx->ListState.CurrentPos + numNodes + contNodes > BLOCK_SIZE) {
if (ctx->ListState.CurrentPos + numNodes + contNodes >= BLOCK_SIZE) {
/* This block is full. Allocate a new block and chain to it */
Node *newblock;
Node *n = ctx->ListState.CurrentBlock + ctx->ListState.CurrentPos;