summaryrefslogtreecommitdiff
path: root/src/mesa/program/program.c
diff options
context:
space:
mode:
authorLuca Barbieri <luca@luca-barbieri.com>2010-09-05 17:57:12 +0200
committerLuca Barbieri <luca@luca-barbieri.com>2010-09-05 17:57:12 +0200
commit029c1815717ea62bae28e86798c86dfa98cbc8a7 (patch)
treeb91da49168dcfa1f59502ec761042f5ecaba974f /src/mesa/program/program.c
parent9a77d0471a655b2903a9e2696aa91b4b92267583 (diff)
mesa: don't smash the stack in _mesa_find_used_registers
At some point this actually triggered, not sure if it still does. Give a meaningful assert and refuse to smash the stack anyway.
Diffstat (limited to 'src/mesa/program/program.c')
-rw-r--r--src/mesa/program/program.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c
index 3b6d682744..06b9539bda 100644
--- a/src/mesa/program/program.c
+++ b/src/mesa/program/program.c
@@ -876,12 +876,16 @@ _mesa_find_used_registers(const struct gl_program *prog,
const GLuint n = _mesa_num_inst_src_regs(inst->Opcode);
if (inst->DstReg.File == file) {
- used[inst->DstReg.Index] = GL_TRUE;
+ ASSERT(inst->DstReg.Index < usedSize);
+ if(inst->DstReg.Index < usedSize)
+ used[inst->DstReg.Index] = GL_TRUE;
}
for (j = 0; j < n; j++) {
if (inst->SrcReg[j].File == file) {
- used[inst->SrcReg[j].Index] = GL_TRUE;
+ ASSERT(inst->SrcReg[j].Index < usedSize);
+ if(inst->SrcReg[j].Index < usedSize)
+ used[inst->SrcReg[j].Index] = GL_TRUE;
}
}
}