Skip to content

Commit 011f23d

Browse files
committed
getpwuid(mingw): initialize the structure only once
Signed-off-by: Johannes Schindelin <[email protected]>
1 parent a5bf19b commit 011f23d

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

compat/mingw.c

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1928,16 +1928,27 @@ int mingw_getpagesize(void)
19281928

19291929
struct passwd *getpwuid(int uid)
19301930
{
1931+
static unsigned initialized;
19311932
static char user_name[100];
1932-
static struct passwd p;
1933+
static struct passwd *p;
1934+
DWORD len;
1935+
1936+
if (initialized)
1937+
return p;
19331938

1934-
DWORD len = sizeof(user_name);
1935-
if (!GetUserName(user_name, &len))
1939+
len = sizeof(user_name);
1940+
if (!GetUserName(user_name, &len)) {
1941+
initialized = 1;
19361942
return NULL;
1937-
p.pw_name = user_name;
1938-
p.pw_gecos = "unknown";
1939-
p.pw_dir = NULL;
1940-
return &p;
1943+
}
1944+
1945+
p = xmalloc(sizeof(*p));
1946+
p->pw_name = user_name;
1947+
p->pw_gecos = "unknown";
1948+
p->pw_dir = NULL;
1949+
1950+
initialized = 1;
1951+
return p;
19411952
}
19421953

19431954
static HANDLE timer_event;

0 commit comments

Comments
 (0)