зеркало из https://github.com/mono/ikvm-fork.git
Bug fix. Local variable analysis for finally blocks was incorrect. Fixes bug #3600788.
This commit is contained in:
Родитель
c2cf20fb38
Коммит
99c87eacc7
|
@ -464,8 +464,8 @@ struct LocalVarInfo
|
|||
|
||||
// Now we recursively analyse the handler and afterwards merge the endfault locations back to us
|
||||
FindLocalVarState[] handlerState = new FindLocalVarState[instructions.Length];
|
||||
handlerState[handler].changed = true;
|
||||
handlerState[handler].sites = new FindLocalVarStoreSite[maxLocals];
|
||||
handlerState[handler].Merge(curr);
|
||||
curr = new FindLocalVarState();
|
||||
FindLocalVariablesImpl(codeInfo, classFile, method, handlerState);
|
||||
|
||||
// Merge back to the target of our __goto_finally
|
||||
|
@ -476,7 +476,7 @@ struct LocalVarInfo
|
|||
&& VerifierTypeWrapper.IsFaultBlockException(codeInfo.GetRawStackTypeWrapper(j, 0))
|
||||
&& ((VerifierTypeWrapper)codeInfo.GetRawStackTypeWrapper(j, 0)).Index == handler)
|
||||
{
|
||||
state[instructions[i].Arg1].Merge(handlerState[j]);
|
||||
curr.Merge(handlerState[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче