Skip to content

Commit 809eda1

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

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

18471847
struct passwd *getpwuid(int uid)
18481848
{
1849+
static unsigned initialized;
18491850
static char user_name[100];
1850-
static struct passwd p;
1851+
static struct passwd *p;
1852+
DWORD len;
1853+
1854+
if (initialized)
1855+
return p;
18511856

1852-
DWORD len = sizeof(user_name);
1853-
if (!GetUserName(user_name, &len))
1857+
len = sizeof(user_name);
1858+
if (!GetUserName(user_name, &len)) {
1859+
initialized = 1;
18541860
return NULL;
1855-
p.pw_name = user_name;
1856-
p.pw_gecos = "unknown";
1857-
p.pw_dir = NULL;
1858-
return &p;
1861+
}
1862+
1863+
p = xmalloc(sizeof(*p));
1864+
p->pw_name = user_name;
1865+
p->pw_gecos = "unknown";
1866+
p->pw_dir = NULL;
1867+
1868+
initialized = 1;
1869+
return p;
18591870
}
18601871

18611872
static HANDLE timer_event;

0 commit comments

Comments
 (0)