[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Bug stdio/6530] *printf() and incomplete multibyte sequences returns -1 bogusly



http://sourceware.org/bugzilla/show_bug.cgi?id=6530

--- Comment #21 from Jonathan Nieder <jrnieder at gmail dot com> 2012-06-23 20:34:55 UTC ---
Created attachment 6474
  --> http://sourceware.org/bugzilla/attachment.cgi?id=6474
test conversion from UTF-8 and handling of incomplete characters (fails)

I assume Joseph means to spend some time to avoid future authors breaking
wprintf now that our attention's on it, not to avoid breaking wprintf when
applying your patch.  Your patch doesn't even touch wprintf code.

I tried writing a wprintf testcase, and it's not gone so well.  For
example, I tried

  wchar_t buf[1000];
  int n;

  if (!setlocale(LC_ALL, "ja_JP.UTF-8)) {
    perror("setlocale");
    return 1;
  }
  n = swprintf(buf, sizeof(buf)/sizeof(wchar_t), L"%3s",
        "\xef\xbd\xa1g\xef\xbd\xa2h\xef\xbd\xa3i\xef\xbd\xa4j");

I expected swprintf to return 3 and buf to equal

  { 0xff61, 'g', 0xff62, 0 }

Instead, swprintf returns 8 and converts the entire string.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
You are watching the reporter of the bug.


Reply to: