mirror of
https://github.com/reactos/reactos.git
synced 2025-04-26 16:40:27 +00:00
- Use a common exit point from a function, and thus fix two returns from a seh block not wrapped into _SEH2_YIELD.
- Fixes a crash in Downloader app and in numerous other applications. svn path=/trunk/; revision=40542
This commit is contained in:
parent
77db4acd5e
commit
ff346bf2bd
1 changed files with 6 additions and 4 deletions
|
@ -2474,6 +2474,7 @@ LdrGetProcedureAddress (IN PVOID BaseAddress,
|
|||
IN ULONG Ordinal,
|
||||
OUT PVOID *ProcedureAddress)
|
||||
{
|
||||
NTSTATUS Status = STATUS_PROCEDURE_NOT_FOUND;
|
||||
if (Name && Name->Length)
|
||||
{
|
||||
TRACE_LDR("LdrGetProcedureAddress by NAME - %Z\n", Name);
|
||||
|
@ -2494,7 +2495,7 @@ LdrGetProcedureAddress (IN PVOID BaseAddress,
|
|||
*ProcedureAddress = LdrGetExportByName(BaseAddress, (PUCHAR)Name->Buffer, 0xffff);
|
||||
if (*ProcedureAddress != NULL)
|
||||
{
|
||||
return STATUS_SUCCESS;
|
||||
Status = STATUS_SUCCESS;
|
||||
}
|
||||
DPRINT("LdrGetProcedureAddress: Can't resolve symbol '%Z'\n", Name);
|
||||
}
|
||||
|
@ -2505,17 +2506,18 @@ LdrGetProcedureAddress (IN PVOID BaseAddress,
|
|||
*ProcedureAddress = LdrGetExportByOrdinal(BaseAddress, (WORD)Ordinal);
|
||||
if (*ProcedureAddress)
|
||||
{
|
||||
return STATUS_SUCCESS;
|
||||
Status = STATUS_SUCCESS;
|
||||
}
|
||||
DPRINT("LdrGetProcedureAddress: Can't resolve symbol @%lu\n", Ordinal);
|
||||
}
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
_SEH2_YIELD(return STATUS_DLL_NOT_FOUND);
|
||||
Status = STATUS_DLL_NOT_FOUND;
|
||||
}
|
||||
_SEH2_END;
|
||||
return STATUS_PROCEDURE_NOT_FOUND;
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
|
|
Loading…
Reference in a new issue