diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cc4group.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/cc4group.c b/src/cc4group.c index 85c1be4..00e0a0d 100644 --- a/src/cc4group.c +++ b/src/cc4group.c @@ -333,22 +333,24 @@ static void* cc4group_createTmpMemoryFile(CC4Group* const this, const size_t siz if(unmapData == NULL) { - fprintf(stderr, "ERROR: allocating memory for cleanup data: %s\n", strerror(errno)); - } + SET_ERRNO_ERROR("malloc: allocating memory for cleanup data"); - *unmapData = (MunmapData){ret, size, mmapExtra}; - *cleanupJob = (CC4Group_CleanupJob){(CC4Group_CleanupFunc)cc4group_unmapTmpMemoryFile, unmapData}; + if(cc4group_munmap(ret, size, mmapExtra) == -1) + { + SET_ERRNO_ERROR("malloc: allocating memory for cleanup data; additionally munmap: unmapping the mapped file failed"); + } + ret = NULL; + } + else + { + *unmapData = (MunmapData){ret, size, mmapExtra}; + *cleanupJob = (CC4Group_CleanupJob){(CC4Group_CleanupFunc)cc4group_unmapTmpMemoryFile, unmapData}; + } } if(close(tmpFile) == -1) { fprintf(stderr, "WARNING: close: Closing tmp file failed: %s\n", strerror(errno)); - - if(ret != NULL) - { - cleanupJob->func(cleanupJob->data); - } - return NULL; } if(unlink(TMP_FILE) == -1) |
