Re: bug report: symbolic-ref --short command echos the wrong text while use Chinese language
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Feb 14, 2023, 05:33 UTC
- Message-ID
- <CAPig+cT5mORvJt_E+uDYEVW+SYbUp_1U8hmjWT8iUkjzOnJm=A@mail.gmail.com>
- In-Reply-To
- <CAPig+cSTG2_hsv-amhwDwQNcfLSZ2+if6=MJcyDb6PhKBx-WJQ@mail.gmail.com>
On Tue, Feb 14, 2023 at 12:15 AM Eric Sunshine <sunshine@sunshineco.com> wrote:
Show 19 quoted lines
> On Mon, Feb 13, 2023 at 8:39 PM Jeff King <peff@peff.net> wrote:
> > If you do something like the patch below:
> >
> > - short_name = xstrdup(refname);
> > + warning("strlen(refname) = %d", (int)strlen(refname));
> > + short_name = xcalloc(1, 2*strlen(refname));
> >
> > short_name_len = strlen(short_name);
> > + warning("strlen(short_name) = %d", (int)short_name_len);
> >
> > Does it help at all? And if so, is short_name_len longer than we might
> > expect it to be (I get 39 for the full refname and 28 for the scanf'd
> > name). I'm having trouble coming up with a reason that the scanf value
> > _would_ be unexpectedly long, but just trying to rule things out.
>
> I get results different from yours:
>
> warning: strlen(refname) = 39
> warning: strlen(short_name) = 9sscanf() seems to be the culprit. If I set LANG, then I get the same result as you get:
$ LANG=zh-CN.UTF-8 git symbolic-ref --short HEAD warning: strlen(refname) = 39 warning: strlen(short_name) = 28 测试-加-增加-加-增加