glibc/wcsmbs
Joseph Myers d0a7415979 Handle surrogate pairs in c16rtomb (bug 23794, DR#488, C2X).
The c16rtomb implementation has:

  // XXX The ISO C 11 spec I have does not say anything about handling
  // XXX surrogates in this interface.

The DR#488 resolution, as applied to C2X, requires surrogate pairs to
be handled here (so the first call returns 0 and stores the high
surrogate in the mbstate_t, while the second call combines the
surrogates, produces a multibyte character and returns the number of
bytes written).  This patch implements that.  (mbrtoc16 already
handled producing surrogates as output.)

Tested for x86_64.

	[BZ #23794]
	* wcsmbs/c16rtomb.c (c16rtomb): Save first character of surrogate
	pair and return 0 in that case, and use saved character to
	interpret following character.
	* wcsmbs/tst-c16-surrogate.c: New file.
	* wcsmbs/Makefile (tests): Add tst-c16-surrogate.c.
	[$(run-built-tests) = yes] ($(objpfx)tst-c16-surrogate.out):
	Depend on $(gen-locales)
2018-10-19 16:31:29 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
btowc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
c16rtomb.c Handle surrogate pairs in c16rtomb (bug 23794, DR#488, C2X). 2018-10-19 16:31:29 +00:00
Depend Update. 2000-09-06 22:15:07 +00:00
isoc99_fwscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
isoc99_swscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
isoc99_vfwscanf.c Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
isoc99_vswscanf.c Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
isoc99_vwscanf.c Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
isoc99_wscanf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Makefile Handle surrogate pairs in c16rtomb (bug 23794, DR#488, C2X). 2018-10-19 16:31:29 +00:00
mbrlen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbrtoc16.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbrtowc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbsinit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbsnrtowcs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbsrtowcs_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbsrtowcs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-char-types.c Define char16_t, char32_t consistently with uint_least16_t, uint_least32_t (bug 17979). 2018-02-07 20:33:55 +00:00
test-wcpcpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcpncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcscat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcschr.c Add wcschr test cases 2011-10-23 14:14:26 -04:00
test-wcschrnul.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcscmp.c Move wide char tests to wcsmbs directory 2011-09-08 18:01:07 -04:00
test-wcscpy.c Add tests for wcsrchr and wcscpy 2011-12-17 14:14:58 -05:00
test-wcscspn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcslen.c Add wcslen test cases 2011-10-23 14:11:50 -04:00
test-wcsncat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcsncmp.c Use correct signedness in wcsncmp 2015-04-13 21:25:04 +02:00
test-wcsncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcsnlen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcspbrk.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wcsrchr.c Add tests for wcsrchr and wcscpy 2011-12-17 14:14:58 -05:00
test-wcsspn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wmemchr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-wmemcmp.c Move wide char tests to wcsmbs directory 2011-09-08 18:01:07 -04:00
test-wmemset.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-btowc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-c16-surrogate.c Handle surrogate pairs in c16rtomb (bug 23794, DR#488, C2X). 2018-10-19 16:31:29 +00:00
tst-c16c32-1.c Add #include <stdint.h> for uint[32|64]_t usage (except installed headers). 2013-05-16 11:32:54 -05:00
tst-fgetwc-after-eof.c [BZ 1190] Make EOF sticky in stdio. 2018-03-13 08:31:56 -04:00
tst-mbrtowc2.c Prefer https for Sourceware links 2017-11-16 11:49:26 +05:30
tst-mbrtowc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mbsrtowcs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wchar-h.c Update wcsmbs tests to use the support test driver 2017-04-04 18:05:20 -03:00
tst-wcpncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcrtomb.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcsnlen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcstod-nan-locale.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcstod-nan-sign.c Add tests for sign of NaN returned by strtod (bug 23007). 2018-06-15 17:36:21 +00:00
tst-wcstod-round.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-wcstof.c Update wcsmbs tests to use the support test driver 2017-04-04 18:05:20 -03:00
tst-wcstol-locale.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
uchar.h Define char16_t, char32_t consistently with uint_least16_t, uint_least32_t (bug 17979). 2018-02-07 20:33:55 +00:00
Versions Add _Float32 function aliases. 2017-12-07 00:48:31 +00:00
wchar.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcpcpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcpncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcrtomb.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsatcliff.c Fix handling of tail bytes of buffer in SSE2/SSSE3 x86-64 version strn{,case}cmp 2010-10-03 22:10:30 -04:00
wcscasecmp_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscasecmp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcschr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcschrnul.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscmp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscoll_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscoll.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcscspn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsdup.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcslen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsmbs-tst1.c Add dependencies on needed locales in each subdir tests (bug 18969) 2015-10-12 15:18:08 +02:00
wcsmbsload.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsmbsload.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncase_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncase.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncmp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsncpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsnlen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsnrtombs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcspbrk.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsrchr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsrtombs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsspn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsstr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstod_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstod_nan.c math: Merge strtod_nan_*.h into math-type-macros-*.h 2018-05-16 06:03:08 +02:00
wcstod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstof_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstof_nan.c math: Merge strtod_nan_*.h into math-type-macros-*.h 2018-05-16 06:03:08 +02:00
wcstof.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstok.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstol_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstol.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstold_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstold_nan.c math: Merge strtod_nan_*.h into math-type-macros-*.h 2018-05-16 06:03:08 +02:00
wcstold.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoll_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoll.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoul_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoul.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoull_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoull.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcswidth.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsxfrm_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcsxfrm.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wctob.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcwidth.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcwidth.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemchr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemcmp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemcpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemmove.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmempcpy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wmemset.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00