Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compat/mingw.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index 858ca14a573..32fa6e7c1fa 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -1770,16 +1770,27 @@ int mingw_getpagesize(void)
struct passwd *getpwuid(int uid)
{
+ static unsigned initialized;
static char user_name[100];
- static struct passwd p;
+ static struct passwd *p;
+ DWORD len;
- DWORD len = sizeof(user_name);
- if (!GetUserName(user_name, &len))
+ if (initialized)
+ return p;
+
+ len = sizeof(user_name);
+ if (!GetUserName(user_name, &len)) {
+ initialized = 1;
return NULL;
- p.pw_name = user_name;
- p.pw_gecos = "unknown";
- p.pw_dir = NULL;
- return &p;
+ }
+
+ p = xmalloc(sizeof(*p));
+ p->pw_name = user_name;
+ p->pw_gecos = "unknown";
+ p->pw_dir = NULL;
+
+ initialized = 1;
+ return p;
}
static HANDLE timer_event;