Merge PEI & DXE LzmaCustomDecompressLib. A previous implementation

was causing the LZMA decompression code to request a large buffer,
which caused an ASSERT to fail for PEI's AllocatePool.  The
current implementation, which uses the LzmaDecode function, does
not have this issue and therefore both the PEI & DXE versions can
use AllocatePool/FreePool.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8236 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
jljusten
2009-05-04 20:00:04 +00:00
parent f580c1bd27
commit 19a4a0a0ac
7 changed files with 45 additions and 165 deletions

View File

@@ -29,7 +29,43 @@
#include "Sdk/C/7zVersion.h"
#include "Sdk/C/LzmaDec.h"
extern ISzAlloc g_Alloc;
/**
Allocation routine used by LZMA decompression.
@param p Pointer to the ISzAlloc instance
@param size The size in bytes to be allocated
@return The allocated pointer address, or NULL on failure
**/
STATIC
VOID *
SzAlloc (
void *p,
size_t size
)
{
return AllocatePool (size);
}
/**
Free routine used by LZMA decompression.
@param p Pointer to the ISzAlloc instance
@param address The address to be freed
**/
STATIC
VOID
SzFree (
void *p,
void *address
)
{
if (address != NULL) {
FreePool (address);
}
}
STATIC ISzAlloc g_Alloc = { SzAlloc, SzFree };
#define LZMA_HEADER_SIZE (LZMA_PROPS_SIZE + 8)