:: commit 8b2cafc875926d87b954ef3a16dba97b107269c2

mintsuki <mintsuki@protonmail.com> — 2022-03-26 10:59

parents: 8b19de71e6

misc: Bug fixes

diff --git a/common/protos/limine.c b/common/protos/limine.c
index 4e61f019..297c2368 100644
--- a/common/protos/limine.c
+++ b/common/protos/limine.c
@@ -49,26 +49,25 @@ static struct limine_file get_file(struct file_handle *file, char *cmdline) {
     if (file->pxe) {
         ret.tftp_ip = file->pxe_ip;
         ret.tftp_port = file->pxe_port;
-        return ret;
-    }
-
-    struct volume *vol = file->vol;
+    } else {
+        struct volume *vol = file->vol;
 
-    ret.partition_index = vol->partition;
+        ret.partition_index = vol->partition;
 
-    ret.mbr_disk_id = mbr_get_id(vol);
+        ret.mbr_disk_id = mbr_get_id(vol);
 
-    if (vol->guid_valid) {
-        memcpy(&ret.part_uuid, &vol->guid, sizeof(struct limine_uuid));
-    }
+        if (vol->guid_valid) {
+            memcpy(&ret.part_uuid, &vol->guid, sizeof(struct limine_uuid));
+        }
 
-    if (vol->part_guid_valid) {
-        memcpy(&ret.gpt_part_uuid, &vol->part_guid, sizeof(struct limine_uuid));
-    }
+        if (vol->part_guid_valid) {
+            memcpy(&ret.gpt_part_uuid, &vol->part_guid, sizeof(struct limine_uuid));
+        }
 
-    struct guid gpt_disk_uuid;
-    if (gpt_get_guid(&gpt_disk_uuid, vol->backing_dev ?: vol) == true) {
-        memcpy(&ret.gpt_disk_uuid, &gpt_disk_uuid, sizeof(struct limine_uuid));
+        struct guid gpt_disk_uuid;
+        if (gpt_get_guid(&gpt_disk_uuid, vol->backing_dev ?: vol) == true) {
+            memcpy(&ret.gpt_disk_uuid, &gpt_disk_uuid, sizeof(struct limine_uuid));
+        }
     }
 
     char *path = ext_mem_alloc(strlen(file->path) + 1);
@@ -374,6 +373,10 @@ FEAT_START
             break;
     }
 
+    if (module_count == 0) {
+        break;
+    }
+
     struct limine_module_response *module_response =
         ext_mem_alloc(sizeof(struct limine_module_response));
 
@@ -453,7 +456,7 @@ FEAT_START
 
 #if defined (__i386__)
     if (stivale2_rt_stack == NULL) {
-        stivale2_rt_stack = ext_mem_alloc(16384);
+        stivale2_rt_stack = ext_mem_alloc(16384) + 16384;
     }
 
     terminal_response->write = (uintptr_t)(void *)stivale2_term_write_entry;
diff --git a/common/protos/stivale2.c b/common/protos/stivale2.c
index 28750b9d..a1eb16ef 100644
--- a/common/protos/stivale2.c
+++ b/common/protos/stivale2.c
@@ -570,7 +570,7 @@ failed_to_load_header_section:
 
 #if defined (__i386__)
         if (stivale2_rt_stack == NULL) {
-            stivale2_rt_stack = ext_mem_alloc(8192);
+            stivale2_rt_stack = ext_mem_alloc(8192) + 8192;
         }
 
         tag->term_write = (uintptr_t)(void *)stivale2_term_write_entry;
tab: 248 wrap: offon