Skip to content

Commit 7eb94dc

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

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

17711771
struct passwd *getpwuid(int uid)
17721772
{
1773+
static unsigned initialized;
17731774
static char user_name[100];
1774-
static struct passwd p;
1775+
static struct passwd *p;
1776+
DWORD len;
17751777

1776-
DWORD len = sizeof(user_name);
1777-
if (!GetUserName(user_name, &len))
1778+
if (initialized)
1779+
return p;
1780+
1781+
len = sizeof(user_name);
1782+
if (!GetUserName(user_name, &len)) {
1783+
initialized = 1;
17781784
return NULL;
1779-
p.pw_name = user_name;
1780-
p.pw_gecos = "unknown";
1781-
p.pw_dir = NULL;
1782-
return &p;
1785+
}
1786+
1787+
p = xmalloc(sizeof(*p));
1788+
p->pw_name = user_name;
1789+
p->pw_gecos = "unknown";
1790+
p->pw_dir = NULL;
1791+
1792+
initialized = 1;
1793+
return p;
17831794
}
17841795

17851796
static HANDLE timer_event;

0 commit comments

Comments
 (0)