summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/server/image.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/server/image.c b/src/server/image.c
index ec0ab7b..13627d8 100644
--- a/src/server/image.c
+++ b/src/server/image.c
@@ -1761,17 +1761,19 @@ static bool image_ensureDiskSpace(uint64_t size, bool force)
oldest = image_lock( oldest );
if ( oldest == NULL ) continue; // Image freed in the meantime? Try again
logadd( LOG_INFO, "'%s:%d' has to go!", oldest->name, (int)oldest->rid );
- unlink( oldest->path );
- size_t len = strlen( oldest->path ) + 5 + 1;
+ char *filename = strdup( oldest->path );
+ oldest = image_remove( oldest );
+ oldest = image_release( oldest );
+ unlink( filename );
+ size_t len = strlen( filename ) + 10;
char buffer[len];
- snprintf( buffer, len, "%s.map", oldest->path );
+ snprintf( buffer, len, "%s.map", filename );
unlink( buffer );
- snprintf( buffer, len, "%s.crc", oldest->path );
+ snprintf( buffer, len, "%s.crc", filename );
unlink( buffer );
- snprintf( buffer, len, "%s.meta", oldest->path );
+ snprintf( buffer, len, "%s.meta", filename );
unlink( buffer );
- oldest = image_remove( oldest );
- oldest = image_release( oldest );
+ free( filename );
}
return false;
}