-
Notifications
You must be signed in to change notification settings - Fork 561
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
As a bonus, add support for XZ-compressed files in ZIP
- Loading branch information
1 parent
5e96dbc
commit 4497d7f
Showing
89 changed files
with
19,247 additions
and
2,061 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
/* 7zAlloc.c -- Allocation functions for 7z processing | ||
2023-03-04 : Igor Pavlov : Public domain */ | ||
|
||
#include "Precomp.h" | ||
|
||
#include <stdlib.h> | ||
|
||
#include "7zAlloc.h" | ||
|
||
/* #define SZ_ALLOC_DEBUG */ | ||
/* use SZ_ALLOC_DEBUG to debug alloc/free operations */ | ||
|
||
#ifdef SZ_ALLOC_DEBUG | ||
|
||
/* | ||
#ifdef _WIN32 | ||
#include "7zWindows.h" | ||
#endif | ||
*/ | ||
|
||
#include <stdio.h> | ||
static int g_allocCount = 0; | ||
static int g_allocCountTemp = 0; | ||
|
||
static void Print_Alloc(const char *s, size_t size, int *counter) | ||
{ | ||
const unsigned size2 = (unsigned)size; | ||
fprintf(stderr, "\n%s count = %10d : %10u bytes; ", s, *counter, size2); | ||
(*counter)++; | ||
} | ||
static void Print_Free(const char *s, int *counter) | ||
{ | ||
(*counter)--; | ||
fprintf(stderr, "\n%s count = %10d", s, *counter); | ||
} | ||
#endif | ||
|
||
void *SzAlloc(ISzAllocPtr p, size_t size) | ||
{ | ||
UNUSED_VAR(p) | ||
if (size == 0) | ||
return 0; | ||
#ifdef SZ_ALLOC_DEBUG | ||
Print_Alloc("Alloc", size, &g_allocCount); | ||
#endif | ||
return malloc(size); | ||
} | ||
|
||
void SzFree(ISzAllocPtr p, void *address) | ||
{ | ||
UNUSED_VAR(p) | ||
#ifdef SZ_ALLOC_DEBUG | ||
if (address) | ||
Print_Free("Free ", &g_allocCount); | ||
#endif | ||
free(address); | ||
} | ||
|
||
void *SzAllocTemp(ISzAllocPtr p, size_t size) | ||
{ | ||
UNUSED_VAR(p) | ||
if (size == 0) | ||
return 0; | ||
#ifdef SZ_ALLOC_DEBUG | ||
Print_Alloc("Alloc_temp", size, &g_allocCountTemp); | ||
/* | ||
#ifdef _WIN32 | ||
return HeapAlloc(GetProcessHeap(), 0, size); | ||
#endif | ||
*/ | ||
#endif | ||
return malloc(size); | ||
} | ||
|
||
void SzFreeTemp(ISzAllocPtr p, void *address) | ||
{ | ||
UNUSED_VAR(p) | ||
#ifdef SZ_ALLOC_DEBUG | ||
if (address) | ||
Print_Free("Free_temp ", &g_allocCountTemp); | ||
/* | ||
#ifdef _WIN32 | ||
HeapFree(GetProcessHeap(), 0, address); | ||
return; | ||
#endif | ||
*/ | ||
#endif | ||
free(address); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
/* 7zAlloc.h -- Allocation functions | ||
2023-03-04 : Igor Pavlov : Public domain */ | ||
|
||
#ifndef ZIP7_INC_7Z_ALLOC_H | ||
#define ZIP7_INC_7Z_ALLOC_H | ||
|
||
#include "7zTypes.h" | ||
|
||
EXTERN_C_BEGIN | ||
|
||
void *SzAlloc(ISzAllocPtr p, size_t size); | ||
void SzFree(ISzAllocPtr p, void *address); | ||
|
||
void *SzAllocTemp(ISzAllocPtr p, size_t size); | ||
void SzFreeTemp(ISzAllocPtr p, void *address); | ||
|
||
EXTERN_C_END | ||
|
||
#endif |
Oops, something went wrong.