summaryrefslogtreecommitdiffstats
path: root/src/cc4group.c
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2019-03-18 16:32:57 +0100
committerMarkus Mittendrein <git@maxmitti.tk>2019-03-18 16:33:18 +0100
commit4e5cb7b5fdf25613422205ee56290a8e47701d9f (patch)
tree69e3fb6a3d12a2a130c0370ef165e9f80b248550 /src/cc4group.c
parent0a77f7a5fbee586e6a05120b087202b84f1a9dc6 (diff)
downloadcc4group-4e5cb7b5fdf25613422205ee56290a8e47701d9f.tar.gz
cc4group-4e5cb7b5fdf25613422205ee56290a8e47701d9f.zip
Fix handling of various error cases in cc4group_createTmpMemoryFile
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)