diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index d2a55fad52..7b2c3205d8 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -224,11 +224,8 @@ Process* Process::fork(RegisterDump& regs) dbgprintf("fork: child=%p\n", child); #endif -#if 0 - // FIXME: An honest fork() would copy these. Needs a Vector copy ctor. - child->m_arguments = m_arguments; - child->m_initialEnvironment = m_initialEnvironment; -#endif + child->m_initial_arguments = m_initial_arguments; + child->m_initial_environment = m_initial_environment; for (auto& region : m_regions) { #ifdef FORK_DEBUG @@ -408,8 +405,8 @@ int Process::do_exec(const String& path, Vector&& arguments, Vectorinode(); - m_arguments = move(arguments); - m_initialEnvironment = move(environment); + m_initial_arguments = move(arguments); + m_initial_environment = move(environment); #ifdef TASK_DEBUG kprintf("Process %u (%s) exec'd %s @ %p\n", pid(), name().characters(), path.characters(), m_tss.eip); @@ -525,14 +522,14 @@ int Process::sys$get_environment(char*** environ) MM.map_region(*this, *region); char* envpage = (char*)region->linearAddress.get(); *environ = (char**)envpage; - char* bufptr = envpage + (sizeof(char*) * (m_initialEnvironment.size() + 1)); - for (size_t i = 0; i < m_initialEnvironment.size(); ++i) { + char* bufptr = envpage + (sizeof(char*) * (m_initial_environment.size() + 1)); + for (size_t i = 0; i < m_initial_environment.size(); ++i) { (*environ)[i] = bufptr; - memcpy(bufptr, m_initialEnvironment[i].characters(), m_initialEnvironment[i].length()); - bufptr += m_initialEnvironment[i].length(); + memcpy(bufptr, m_initial_environment[i].characters(), m_initial_environment[i].length()); + bufptr += m_initial_environment[i].length(); *(bufptr++) = '\0'; } - (*environ)[m_initialEnvironment.size()] = nullptr; + (*environ)[m_initial_environment.size()] = nullptr; return 0; } @@ -543,13 +540,13 @@ int Process::sys$get_arguments(int* argc, char*** argv) return -ENOMEM; MM.map_region(*this, *region); char* argpage = (char*)region->linearAddress.get(); - *argc = m_arguments.size(); + *argc = m_initial_arguments.size(); *argv = (char**)argpage; - char* bufptr = argpage + (sizeof(char*) * m_arguments.size()); - for (size_t i = 0; i < m_arguments.size(); ++i) { + char* bufptr = argpage + (sizeof(char*) * m_initial_arguments.size()); + for (size_t i = 0; i < m_initial_arguments.size(); ++i) { (*argv)[i] = bufptr; - memcpy(bufptr, m_arguments[i].characters(), m_arguments[i].length()); - bufptr += m_arguments[i].length(); + memcpy(bufptr, m_initial_arguments[i].characters(), m_initial_arguments[i].length()); + bufptr += m_initial_arguments[i].length(); *(bufptr++) = '\0'; } return 0; diff --git a/Kernel/Process.h b/Kernel/Process.h index 39c6713e1a..858a3f0988 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -347,8 +347,8 @@ private: static void notify_waiters(pid_t waitee, int exit_status, int signal); - Vector m_arguments; - Vector m_initialEnvironment; + Vector m_initial_arguments; + Vector m_initial_environment; HashTable m_gids; Region* m_stack_region { nullptr };