mirror of https://github.com/acidanthera/audk.git
EmulatorPkg/Sec: Change scope of PpiArray[10]
The local variable PpiArray[10] is declared in the middle of the SEC module _ModuleEntryPoint() with its own scope. However, PpiArray has a dangling reference to its location on the stack after the scope is closed. This causes issues with some compilers (e.g. XCODE5). The fix is to move the declaration of PpiArray[10] to the beginning of the function, so it is scoped correctly for all references to this local variable and references to its location. Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Andrew Fish <afish@apple.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Tested-by: Andrew Fish <afish@apple.com>
This commit is contained in:
parent
6ed2c8bed3
commit
d47778e522
|
@ -75,6 +75,7 @@ _ModuleEntryPoint (
|
|||
EFI_PEI_PPI_DESCRIPTOR *SecPpiList;
|
||||
UINTN SecReseveredMemorySize;
|
||||
UINTN Index;
|
||||
EFI_PEI_PPI_DESCRIPTOR PpiArray[10];
|
||||
|
||||
EMU_MAGIC_PAGE()->PpiList = PpiList;
|
||||
ProcessLibraryConstructorList ();
|
||||
|
@ -104,16 +105,13 @@ _ModuleEntryPoint (
|
|||
SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + SecReseveredMemorySize);
|
||||
SecCoreData->PeiTemporaryRamSize -= SecReseveredMemorySize;
|
||||
#else
|
||||
{
|
||||
//
|
||||
// When I subtrack from SecCoreData->PeiTemporaryRamBase PEI Core crashes? Either there is a bug
|
||||
// or I don't understand temp RAM correctly?
|
||||
//
|
||||
EFI_PEI_PPI_DESCRIPTOR PpiArray[10];
|
||||
|
||||
SecPpiList = &PpiArray[0];
|
||||
ASSERT (sizeof (PpiArray) >= SecReseveredMemorySize);
|
||||
}
|
||||
#endif
|
||||
// Copy existing list, and append our entries.
|
||||
CopyMem (SecPpiList, PpiList, sizeof (EFI_PEI_PPI_DESCRIPTOR) * Index);
|
||||
|
|
Loading…
Reference in New Issue