diff --git a/src/kernel/multiboot.cpp b/src/kernel/multiboot.cpp index 6e8bf3b21..fb1d59a81 100644 --- a/src/kernel/multiboot.cpp +++ b/src/kernel/multiboot.cpp @@ -181,7 +181,8 @@ void kernel::multiboot(uint32_t boot_addr) if (info->flags & MULTIBOOT_INFO_CMDLINE) { const auto* cmdline = (const char*) (uintptr_t) info->cmdline; INFO2("* Booted with parameters @ {}: {}", (const void*)(uintptr_t)info->cmdline, cmdline); - kernel::state().cmdline = std::pmr::string(cmdline).data(); + // Bootloader memory (_multiboot_free_begin); no temp .data()/strdup. + kernel::state().cmdline = cmdline; } if (info->flags & MULTIBOOT_INFO_MEM_MAP) { diff --git a/src/platform/x86_pc/init_libc.cpp b/src/platform/x86_pc/init_libc.cpp index ae39c919a..2e2c86eec 100644 --- a/src/platform/x86_pc/init_libc.cpp +++ b/src/platform/x86_pc/init_libc.cpp @@ -110,10 +110,13 @@ namespace x86 argv[1] = 0x0; int argc = 1; - // Env vars - argv[2] = std::pmr::string("LC_CTYPE=C").data(); - argv[3] = std::pmr::string("LC_ALL=C").data(); - argv[4] = std::pmr::string("USER=root").data(); + // Env vars (static storage — not .data() of a temporary pmr::string) + static char env_lc_ctype[] = "LC_CTYPE=C"; + static char env_lc_all[] = "LC_ALL=C"; + static char env_user[] = "USER=root"; + argv[2] = env_lc_ctype; + argv[3] = env_lc_all; + argv[4] = env_user; argv[5] = 0x0; // auxiliary vector