mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +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:
@@ -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;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
|
||||
Reference in New Issue
Block a user