summaryrefslogtreecommitdiff
path: root/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c
diff options
context:
space:
mode:
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2009-05-04 20:00:04 +0000
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2009-05-04 20:00:04 +0000
commit19a4a0a0ac0176d6f88788afc5207465e8be983e (patch)
tree74b934c6b6fad47d1e69eb2d481404ebe73bbe52 /IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c
parentf580c1bd27953e9544771c4a388abd79d3394a13 (diff)
downloadedk2-platforms-19a4a0a0ac0176d6f88788afc5207465e8be983e.tar.xz
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
Diffstat (limited to 'IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c')
-rw-r--r--IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c
index f1729825c7..439e15beab 100644
--- a/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c
+++ b/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c
@@ -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)