Skip to content

Commit 616d1c8

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

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

18011801
struct passwd *getpwuid(int uid)
18021802
{
1803+
static unsigned initialized;
18031804
static char user_name[100];
1804-
static struct passwd p;
1805+
static struct passwd *p;
1806+
DWORD len;
18051807

1806-
DWORD len = sizeof(user_name);
1807-
if (!GetUserName(user_name, &len))
1808+
if (initialized)
1809+
return p;
1810+
1811+
len = sizeof(user_name);
1812+
if (!GetUserName(user_name, &len)) {
1813+
initialized = 1;
18081814
return NULL;
1809-
p.pw_name = user_name;
1810-
p.pw_gecos = "unknown";
1811-
p.pw_dir = NULL;
1812-
return &p;
1815+
}
1816+
1817+
p = xmalloc(sizeof(*p));
1818+
p->pw_name = user_name;
1819+
p->pw_gecos = "unknown";
1820+
p->pw_dir = NULL;
1821+
1822+
initialized = 1;
1823+
return p;
18131824
}
18141825

18151826
static HANDLE timer_event;

0 commit comments

Comments
 (0)