Hi Dscho On 04.07.19 23:52, Johannes Schindelin wrote: > Hi Beat, > > On Thu, 4 Jul 2019, Beat Bolli wrote: > >> 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. > > Good catch. > > How about I use `ARRAY_SIZE(buf)`? Since this is already in `next`, I will > prepare a follow-up patch. Of course, ARRAY_SIZE() is even better. I didn't remember it existed. Cheers, Beat > > Ciao, > Dscho > >> >>> + if (!GetUserNameW(buf, &len)) { >>> + initialized = 1; >>> + return NULL; >>> + } >>> + >>> + if (xwcstoutf(user_name, buf, sizeof(user_name)) < 0) { >>> initialized = 1; >>> return NULL; >>> } >>> >> >> Cheers, >> Beat >>