vcruntime140_1: Use return address from catch block routine if not provided by catch block info.

Signed-off-by: Daniel Lehman <dlehman25@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
feature/deterministic
Daniel Lehman 2020-05-21 20:51:30 -07:00 committed by Alexandre Julliard
parent cfa4282119
commit 2f5ea32377
1 changed files with 2 additions and 1 deletions

View File

@ -603,7 +603,8 @@ static inline void find_catch_block4(EXCEPTION_RECORD *rec, CONTEXT *context,
(ULONG_PTR)rva_to_ptr(ci.handler, dispatch->ImageBase);
catch_record.ExceptionInformation[6] = (ULONG_PTR)untrans_rec;
catch_record.ExceptionInformation[7] = (ULONG_PTR)context;
catch_record.ExceptionInformation[8] = (ULONG_PTR)rva_to_ptr(
if (ci.ret_addr)
catch_record.ExceptionInformation[8] = (ULONG_PTR)rva_to_ptr(
ci.ret_addr + dispatch->FunctionEntry->BeginAddress, dispatch->ImageBase);
RtlUnwindEx((void*)frame, (void*)dispatch->ControlPc, &catch_record, NULL, &ctx, NULL);
}