]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
libc: fix c*rtomb/mbrtoc*
authorKyle Evans <kevans@FreeBSD.org>
Wed, 23 Aug 2023 03:40:45 +0000 (22:40 -0500)
committerKyle Evans <kevans@FreeBSD.org>
Wed, 23 Aug 2023 03:40:45 +0000 (22:40 -0500)
commite2030ca246a777c50a7aacb3a35f88addded21cf
treef95b9856cccb82581a9cdd98bcc05769b220134c
parentc7df87209634129df476049c2f38cd4ebefa386f
libc: fix c*rtomb/mbrtoc*

In 693f88c9da8d ("iconv_std: complete the //IGNORE support"), we
more completely implemented //IGNORE, which changed the semantics of
ci_discard_ilseq. DISCARD_ILSEQ semantics are supposed to match
//IGNORE, so we really can't do much about that particular
incompatibility.  This broke c*rtomb and mbrtoc* handling of invalid
sequences, but it turns out they don't want DISCARD_ILSEQ semantics at
all; they really want the subset that we call
_CITRUS_ICONV_F_HIDE_INVALID.

This restores the exact flow in iconv_std to precisely how it happened
prior to 693f88c9da8d.

PR: 265871
Fixes: 693f88c9da8d ("iconv_std: complete the //IGNORE support")
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D41513
lib/libc/locale/cXXrtomb_iconv.h
lib/libc/locale/mbrtocXX_iconv.h