mirror of https://github.com/acidanthera/audk.git
ShellPkg: Increase reallocation size for temp memory files
If data of any real size were to be piped from one command to another, an inordinate amount of time could be taken up by reallocating memory that is only 10 bytes bigger than what is currently needed. Also, this could cause unwelcome memory fragmentation. Added a define to control how much memory is reallocated beyond that which is currently needed. Set it to 1K vs. the original 10 bytes. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jim Dailey <jim_dailey@dell.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
This commit is contained in:
parent
d73fc181e7
commit
c8d9d0e2bd
|
@ -18,6 +18,8 @@
|
|||
#include "Shell.h"
|
||||
#include "FileHandleInternal.h"
|
||||
|
||||
#define MEM_WRITE_REALLOC_OVERHEAD 1024
|
||||
|
||||
/**
|
||||
File style interface for console (Open).
|
||||
|
||||
|
@ -1398,8 +1400,8 @@ FileInterfaceMemWrite(
|
|||
// Unicode
|
||||
//
|
||||
if ((UINTN)(MemFile->Position + (*BufferSize)) > (UINTN)(MemFile->BufferSize)) {
|
||||
MemFile->Buffer = ReallocatePool((UINTN)(MemFile->BufferSize), (UINTN)(MemFile->BufferSize) + (*BufferSize) + 10, MemFile->Buffer);
|
||||
MemFile->BufferSize += (*BufferSize) + 10;
|
||||
MemFile->Buffer = ReallocatePool((UINTN)(MemFile->BufferSize), (UINTN)(MemFile->BufferSize) + (*BufferSize) + MEM_WRITE_REALLOC_OVERHEAD, MemFile->Buffer);
|
||||
MemFile->BufferSize += (*BufferSize) + MEM_WRITE_REALLOC_OVERHEAD;
|
||||
}
|
||||
CopyMem(((UINT8*)MemFile->Buffer) + MemFile->Position, Buffer, *BufferSize);
|
||||
MemFile->Position += (*BufferSize);
|
||||
|
@ -1415,8 +1417,8 @@ FileInterfaceMemWrite(
|
|||
}
|
||||
AsciiSPrint(AsciiBuffer, *BufferSize, "%S", Buffer);
|
||||
if ((UINTN)(MemFile->Position + AsciiStrSize(AsciiBuffer)) > (UINTN)(MemFile->BufferSize)) {
|
||||
MemFile->Buffer = ReallocatePool((UINTN)(MemFile->BufferSize), (UINTN)(MemFile->BufferSize) + AsciiStrSize(AsciiBuffer) + 10, MemFile->Buffer);
|
||||
MemFile->BufferSize += AsciiStrSize(AsciiBuffer) + 10;
|
||||
MemFile->Buffer = ReallocatePool((UINTN)(MemFile->BufferSize), (UINTN)(MemFile->BufferSize) + AsciiStrSize(AsciiBuffer) + MEM_WRITE_REALLOC_OVERHEAD, MemFile->Buffer);
|
||||
MemFile->BufferSize += AsciiStrSize(AsciiBuffer) + MEM_WRITE_REALLOC_OVERHEAD;
|
||||
}
|
||||
CopyMem(((UINT8*)MemFile->Buffer) + MemFile->Position, AsciiBuffer, AsciiStrSize(AsciiBuffer));
|
||||
MemFile->Position += (*BufferSize / sizeof(CHAR16));
|
||||
|
|
Loading…
Reference in New Issue