On 27.06.19 11:37, Johannes Schindelin via GitGitGadget wrote: > From: Johannes Schindelin <johannes.schindelin@xxxxxx> > > Previously, we would have obtained the user name encoded in whatever the > current code page is. > > Note: the "user name" here does not denote the full name but instead the > short logon name. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > compat/mingw.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/compat/mingw.c b/compat/mingw.c > index 9b6d2400e1..8526876262 100644 > --- a/compat/mingw.c > +++ b/compat/mingw.c > @@ -1946,13 +1946,19 @@ struct passwd *getpwuid(int uid) > static unsigned initialized; > static char user_name[100]; > static struct passwd *p; > + wchar_t buf[100]; > DWORD len; > > if (initialized) > return p; > > - len = sizeof(user_name); > - if (!GetUserName(user_name, &len)) { > + len = sizeof(buf); I think this should be "len = sizeof(buf) / sizeof(buf[0])". GetUserNameW() takes the number of characters, not bytes. > + if (!GetUserNameW(buf, &len)) { > + initialized = 1; > + return NULL; > + } > + > + if (xwcstoutf(user_name, buf, sizeof(user_name)) < 0) { > initialized = 1; > return NULL; > } > Cheers, Beat