limine-install: Zero out partition entries BEFORE calculating crc32
diff --git a/limine-install/limine-install b/limine-install/limine-install
index ccc1519d..ba6be7cf 100755
Binary files a/limine-install/limine-install and b/limine-install/limine-install differ
diff --git a/limine-install/limine-install.c b/limine-install/limine-install.c
index 3f18ad78..2fac6602 100644
--- a/limine-install/limine-install.c
+++ b/limine-install/limine-install.c
@@ -407,6 +407,15 @@ int main(int argc, char *argv[]) {
fprintf(stderr, "New maximum count of partition entries: %zu.\n", new_partition_entry_count);
+ // Zero out unused partitions
+ void *empty = calloc(1, gpt_header.size_of_partition_entry);
+ for (size_t i = max_partition_entry_used + 1; i < new_partition_entry_count; i++) {
+ device_write(empty,
+ gpt_header.partition_entry_lba * lb_size + i * gpt_header.size_of_partition_entry,
+ gpt_header.size_of_partition_entry);
+ }
+ free(empty);
+
uint8_t *partition_array =
malloc(new_partition_entry_count * gpt_header.size_of_partition_entry);
if (partition_array == NULL) {
@@ -424,15 +433,6 @@ int main(int argc, char *argv[]) {
free(partition_array);
- // Zero out unused partitions
- void *empty = calloc(1, gpt_header.size_of_partition_entry);
- for (size_t i = max_partition_entry_used + 1; i < new_partition_entry_count; i++) {
- device_write(empty,
- gpt_header.partition_entry_lba * lb_size + i * gpt_header.size_of_partition_entry,
- gpt_header.size_of_partition_entry);
- }
- free(empty);
-
gpt_header.partition_entry_array_crc32 = crc32_partition_array;
gpt_header.number_of_partition_entries = new_partition_entry_count;
gpt_header.crc32 = 0;
