From: Brian Date: Fri, 26 Oct 2007 18:24:28 +0000 (-0600) Subject: if we hit RET w/ empty call stack, halt X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f92083c338069c5c22d200e4696d8cd908258492;p=mesa.git if we hit RET w/ empty call stack, halt --- diff --git a/src/mesa/pipe/tgsi/exec/tgsi_exec.c b/src/mesa/pipe/tgsi/exec/tgsi_exec.c index 42aed9bd6b1..0125f40dd22 100644 --- a/src/mesa/pipe/tgsi/exec/tgsi_exec.c +++ b/src/mesa/pipe/tgsi/exec/tgsi_exec.c @@ -2082,6 +2082,13 @@ exec_instruction( if (mach->ExecMask == 0x0) { /* really return now (otherwise, keep executing */ + if (mach->CallStackTop == 0) { + /* returning from main() */ + *pc = -1; + return; + } + *pc = mach->CallStack[--mach->CallStackTop]; + /* pop the Cond, Loop, Cont stacks */ assert(mach->CondStackTop > 0); mach->CondMask = mach->CondStack[--mach->CondStackTop]; @@ -2089,16 +2096,9 @@ exec_instruction( mach->LoopMask = mach->LoopStack[--mach->LoopStackTop]; assert(mach->ContStackTop > 0); mach->ContMask = mach->ContStack[--mach->ContStackTop]; - assert(mach->FuncStackTop > 0); mach->FuncMask = mach->FuncStack[--mach->FuncStackTop]; - assert(mach->CallStackTop >= 0); - if (mach->CallStackTop == 0) { - /* XXX error? */ - return; - } - *pc = mach->CallStack[--mach->CallStackTop]; UPDATE_EXEC_MASK(mach); } break;