Skip to content

Commit ac70f54

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

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
@@ -1765,16 +1765,27 @@ int mingw_getpagesize(void)
17651765

17661766
struct passwd *getpwuid(int uid)
17671767
{
1768+
static unsigned initialized;
17681769
static char user_name[100];
1769-
static struct passwd p;
1770+
static struct passwd *p;
1771+
DWORD len;
17701772

1771-
DWORD len = sizeof(user_name);
1772-
if (!GetUserName(user_name, &len))
1773+
if (initialized)
1774+
return p;
1775+
1776+
len = sizeof(user_name);
1777+
if (!GetUserName(user_name, &len)) {
1778+
initialized = 1;
17731779
return NULL;
1774-
p.pw_name = user_name;
1775-
p.pw_gecos = "unknown";
1776-
p.pw_dir = NULL;
1777-
return &p;
1780+
}
1781+
1782+
p = xmalloc(sizeof(*p));
1783+
p->pw_name = user_name;
1784+
p->pw_gecos = "unknown";
1785+
p->pw_dir = NULL;
1786+
1787+
initialized = 1;
1788+
return p;
17781789
}
17791790

17801791
static HANDLE timer_event;

0 commit comments

Comments
 (0)