https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86419

Dimitrij Mijoski <dmjpp at hotmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|codecvt<char16_t,           |codecvt<char16_t,
                   |...>::in() and out()        |...>::in() and out()
                   |incorrectly return partial  |incorrectly return ok in
                   |in some cases.              |some cases.

--- Comment #4 from Dimitrij Mijoski <dmjpp at hotmail dot com> ---
I think i found where the bug lies. It lies in 

1. line 557 of the file c++11/codecvt.cc
https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/src/c%2B%2B11/codecvt.cc;h=0311b15177d0439757e0347f7934b5a09b78f8e3;hb=HEAD#l557
.

  The return of the function utf16_in() should be:

      return from.size() ? codecvt_base::partial : codecvt_base::ok;

  The bug is triggered because the loop exists because t.size() is zero.
from.size() should be checked.

2.

Reply via email to