Skip to content

Commit

Permalink
PrepareFunction fix during reentry (error condition)
Browse files Browse the repository at this point in the history
  • Loading branch information
bfiete committed Nov 20, 2021
1 parent 238def6 commit dc57db2
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion IDEHelper/Compiler/CeMachine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5466,6 +5466,7 @@ bool CeContext::Execute(CeFunction* startFunction, uint8* startStackPtr, uint8*
{
auto curFrame = _GetCurFrame();
SetAndRestoreValue<CeFrame*> prevFrame(mCurFrame, &curFrame);
BF_ASSERT(!callEntry.mFunction->mInitialized);
mCeMachine->PrepareFunction(callEntry.mFunction, NULL);
}

Expand Down Expand Up @@ -6915,8 +6916,14 @@ void CeMachine::PrepareFunction(CeFunction* ceFunction, CeBuilder* parentBuilder
AutoTimer autoTimer(mRevisionExecuteTime);
SetAndRestoreValue<CeFunction*> prevCEFunction(mPreparingFunction, ceFunction);

BF_ASSERT(!ceFunction->mInitialized);

if (ceFunction->mFunctionKind == CeFunctionKind_NotSet)
CheckFunctionKind(ceFunction);
{
CheckFunctionKind(ceFunction);
if (ceFunction->mInitialized)
return;
}

BF_ASSERT(!ceFunction->mInitialized);
ceFunction->mInitialized = true;
Expand Down

0 comments on commit dc57db2

Please sign in to comment.