diff --git a/libs/libc/src/pwd.cpp b/libs/libc/src/pwd.cpp index b7c7c16a..e33493fb 100644 --- a/libs/libc/src/pwd.cpp +++ b/libs/libc/src/pwd.cpp @@ -7,6 +7,8 @@ #include static FILE* pwd_file = nullptr; +static FILE* pwnam_file = nullptr; +static FILE* pwuid_file = nullptr; static int initialize_pwd(FILE** stream) { @@ -126,7 +128,6 @@ extern "C" struct passwd* getpwnam(const char* name) { - static FILE* pwnam_file = nullptr; if (!pwnam_file) { if (!initialize_pwd(&pwnam_file)) return NULL; @@ -149,7 +150,6 @@ extern "C" struct passwd* getpwuid(uid_t uid) { - static FILE* pwuid_file = nullptr; if (!pwuid_file) { if (!initialize_pwd(&pwuid_file)) return NULL; @@ -182,5 +182,15 @@ extern "C" fclose(pwd_file); pwd_file = nullptr; } + if (pwuid_file) + { + fclose(pwuid_file); + pwuid_file = nullptr; + } + if (pwnam_file) + { + fclose(pwnam_file); + pwnam_file = nullptr; + } } } \ No newline at end of file