summaryrefslogtreecommitdiffstats
path: root/src/cc4group.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cc4group.c')
-rw-r--r--src/cc4group.c22
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)