summaryrefslogtreecommitdiff
path: root/cgpt/cgpt_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'cgpt/cgpt_common.c')
-rw-r--r--cgpt/cgpt_common.c21
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.