diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2019-04-20 00:51:58 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2019-04-20 02:33:20 +0200 |
| commit | 712a61956cdd0e2e2907fb730b6dde9b5cc3524a (patch) | |
| tree | faa28cbe93f4b7caf3da87670267d8fd0af43700 /src/cc4group.c | |
| parent | 21a42510413d551d23a6aac8016b00d99214c3d6 (diff) | |
| download | cc4group-712a61956cdd0e2e2907fb730b6dde9b5cc3524a.tar.gz cc4group-712a61956cdd0e2e2907fb730b6dde9b5cc3524a.zip | |
Add a custom arg to memory management strategies
Diffstat (limited to 'src/cc4group.c')
| -rw-r--r-- | src/cc4group.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/cc4group.c b/src/cc4group.c index 4f9839b..3782681 100644 --- a/src/cc4group.c +++ b/src/cc4group.c @@ -109,7 +109,7 @@ typedef struct { static bool cc4group_applyMemoryManagementStart(CC4Group_MemoryManagement const management, const uint8_t** data, size_t size) { - void* newData = management->start((void*)*data, size); + void* newData = management->start((void*)*data, size, management->arg); if(newData == NULL) { return false; @@ -120,7 +120,7 @@ static bool cc4group_applyMemoryManagementStart(CC4Group_MemoryManagement const static void cc4group_applyMemoryManagementEnd(CC4Group_MemoryManagement const management, const uint8_t* data) { - management->end((void*)data); + management->end((void*)data, management->arg); } static const uint8_t* cc4group_getOnlyEntryData(CC4Group* const this, const C4GroupEntryData* entry); @@ -2287,19 +2287,22 @@ static CC4Group* cc4group_openAsChild(CC4Group* const this, const char* const pa return child; } -static void* cc4group_memoryManagementTakeStart(void* const data, size_t const size) +static void* cc4group_memoryManagementTakeStart(void* const data, size_t const size, void* const arg) { (void)size; + (void)arg; return data; } -static void cc4group_memoryManagementTakeEnd(void* const data) +static void cc4group_memoryManagementTakeEnd(void* const data, void* const arg) { + (void)arg; free(data); } -static void* cc4group_memoryManagementCopyStart(void* const data, size_t const size) +static void* cc4group_memoryManagementCopyStart(void* const data, size_t const size, void* const arg) { + (void)arg; uint8_t* copy = malloc(size); if(copy == NULL) { @@ -2309,20 +2312,23 @@ static void* cc4group_memoryManagementCopyStart(void* const data, size_t const s return copy; } -static void cc4group_memoryManagementCopyEnd(void* const data) +static void cc4group_memoryManagementCopyEnd(void* const data, void* const arg) { + (void)arg; free(data); } -static void* cc4group_memoryManagementReferenceStart(void* const data, size_t const size) +static void* cc4group_memoryManagementReferenceStart(void* const data, size_t const size, void* const arg) { (void)size; + (void)arg; return data; } -static void cc4group_memoryManagementReferenceEnd(void* const data) +static void cc4group_memoryManagementReferenceEnd(void* const data, void* const arg) { (void)data; + (void)arg; } static CC4Group_MemoryManagement_t takeMemoryManagement = { |
