diff options
Diffstat (limited to 'cgpt/cgpt_common.c')
-rw-r--r-- | cgpt/cgpt_common.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/cgpt/cgpt_common.c b/cgpt/cgpt_common.c index a5550b4c..c129d92d 100644 --- a/cgpt/cgpt_common.c +++ b/cgpt/cgpt_common.c @@ -286,18 +286,6 @@ static int GptSave(struct drive *drive) { } } - if (drive->gpt.primary_header) - free(drive->gpt.primary_header); - drive->gpt.primary_header = 0; - if (drive->gpt.primary_entries) - free(drive->gpt.primary_entries); - drive->gpt.primary_entries = 0; - if (drive->gpt.secondary_header) - free(drive->gpt.secondary_header); - drive->gpt.secondary_header = 0; - if (drive->gpt.secondary_entries) - free(drive->gpt.secondary_entries); - drive->gpt.secondary_entries = 0; return errors ? -1 : 0; } @@ -388,6 +376,15 @@ int DriveClose(struct drive *drive, int update_as_needed) { } } + free(drive->gpt.primary_header); + drive->gpt.primary_header = NULL; + free(drive->gpt.primary_entries); + drive->gpt.primary_entries = NULL; + free(drive->gpt.secondary_header); + drive->gpt.secondary_header = NULL; + free(drive->gpt.secondary_entries); + drive->gpt.secondary_entries = NULL; + // Sync early! Only sync file descriptor here, and leave the whole system sync // outside cgpt because whole system sync would trigger tons of disk accesses // and timeout tests. |