On Tue, Feb 14, 2023 at 12:15 AM Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote: > On Mon, Feb 13, 2023 at 8:39 PM Jeff King <peff@xxxxxxxx> 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) = 9 sscanf() 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 测试-加-增加-加-增加