David Kilzer
03bb929390
Fix parse failure when 4-byte character in UTF-16 BE is split across a chunk
...
This makes the logic in UTF16BEToUTF8() match UTF16LEToUTF8().
* encoding.c:
(UTF16LEToUTF8):
- Fix comment to describe what the code does.
(UTF16BEToUTF8):
- Fix undefined behavior which was applied to UTF16LEToUTF8() in
2f9382033e.
- Add bounds check to while() loop which was applied to
UTF16LEToUTF8() in be803967db.
- Do not return -2 when (in >= inend) to fix the bug. This was
applied to UTF16LEToUTF8() in 496a1cf592.
- Inline (<< 8) statements to match UTF16LEToUTF8().
Add the following tests and results:
test/text-4-byte-UTF-16-BE-offset.xml
test/text-4-byte-UTF-16-BE.xml
test/text-4-byte-UTF-16-LE-offset.xml
test/text-4-byte-UTF-16-LE.xml
2022-01-16 14:07:17 +01:00
..
2000-07-14 14:54:24 +00:00
2017-06-16 21:38:57 +02:00
2000-07-14 14:54:24 +00:00
2017-06-16 21:38:57 +02:00
2002-02-13 13:07:41 +00:00
2017-06-16 21:38:57 +02:00
2002-12-16 22:04:11 +00:00
2017-06-16 21:38:57 +02:00
2003-09-11 23:42:01 +00:00
2017-06-16 21:38:57 +02:00
2004-02-18 14:28:22 +00:00
2017-06-16 21:38:57 +02:00
2004-02-20 08:18:58 +00:00
2017-06-16 21:38:57 +02:00
2004-03-10 16:27:03 +00:00
2017-06-16 21:38:57 +02:00
2008-03-25 16:52:41 +00:00
2017-06-16 21:38:57 +02:00
2009-08-25 17:18:39 +02:00
2017-06-16 21:38:57 +02:00
2008-03-25 16:52:41 +00:00
2017-06-16 21:38:57 +02:00
2001-03-20 11:27:34 +00:00
2017-06-16 21:38:57 +02:00
2006-02-05 02:43:36 +00:00
2017-06-16 21:38:57 +02:00
2003-06-13 10:05:56 +00:00
2017-06-16 21:38:57 +02:00
2000-08-27 21:12:29 +00:00
2017-06-16 21:38:57 +02:00
2000-08-27 21:12:29 +00:00
2017-06-16 21:38:57 +02:00
1999-10-11 15:09:51 +00:00
2003-09-26 12:47:50 +00:00
2017-06-16 21:38:57 +02:00
2016-04-08 10:18:52 +08:00
2017-06-16 21:38:57 +02:00
2016-04-08 10:18:52 +08:00
2017-06-16 21:38:57 +02:00
2016-04-08 10:18:52 +08:00
2017-06-16 21:38:57 +02:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
2005-01-23 17:37:44 +00:00
2017-06-16 21:38:57 +02:00
2005-01-23 17:37:44 +00:00
2017-06-16 21:38:57 +02:00
2005-01-23 17:37:44 +00:00
2017-06-16 21:38:57 +02:00
2007-06-12 14:44:32 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
2001-08-07 01:10:10 +00:00
2017-06-16 21:38:57 +02:00
2001-08-07 01:10:10 +00:00
2017-06-16 21:38:57 +02:00
1999-08-29 21:02:19 +00:00
2017-06-16 21:38:57 +02:00
1999-08-29 21:02:19 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
1999-10-11 15:09:51 +00:00
2017-06-16 21:38:57 +02:00
2001-04-10 16:38:06 +00:00
2017-06-16 21:38:57 +02:00
2001-04-10 16:38:06 +00:00
2017-06-16 21:38:57 +02:00
2001-04-10 16:38:06 +00:00
2017-06-16 21:38:57 +02:00
2001-04-10 16:38:06 +00:00
2017-06-16 21:38:57 +02:00
2001-04-10 16:38:06 +00:00
2017-06-16 21:38:57 +02:00
1999-10-11 15:09:51 +00:00
2017-06-16 21:38:57 +02:00
2003-06-13 10:05:56 +00:00
2017-06-16 21:38:57 +02:00
2000-07-14 14:54:24 +00:00
2017-06-16 21:38:57 +02:00
2009-08-26 14:37:00 +02:00
2017-06-16 21:38:57 +02:00
2008-03-07 16:50:21 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
2001-04-10 16:38:06 +00:00
2020-02-11 17:35:42 +01:00
1999-08-29 21:02:19 +00:00
2017-06-16 21:38:57 +02:00
1999-08-29 21:02:19 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
1999-08-10 19:10:03 +00:00
2017-06-16 21:38:57 +02:00
2021-02-08 21:51:26 +01:00
2021-02-08 21:51:26 +01:00
2001-04-10 16:38:06 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
2004-06-08 12:03:41 +00:00
2017-06-16 21:38:57 +02:00
2004-10-25 16:23:56 +00:00
2017-06-16 21:38:57 +02:00
2006-01-09 14:38:44 +00:00
2017-06-16 21:38:57 +02:00
2006-10-10 20:12:24 +00:00
2017-06-16 21:38:57 +02:00
2008-10-03 07:58:23 +00:00
2017-06-16 21:38:57 +02:00
2014-10-23 13:52:47 +08:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
2017-11-04 15:38:58 +01:00
2017-11-04 15:38:58 +01:00
2005-01-25 21:41:42 +00:00
2017-06-16 21:38:57 +02:00
2004-02-12 11:57:52 +00:00
2017-06-16 21:38:57 +02:00
2000-07-14 14:54:24 +00:00
2017-06-16 21:38:57 +02:00
2000-07-14 14:54:24 +00:00
2017-06-16 21:38:57 +02:00
2003-11-25 18:29:55 +00:00
2017-06-16 21:38:57 +02:00
2013-05-22 22:56:45 +02:00
2017-06-16 21:38:57 +02:00
1999-10-14 09:10:25 +00:00
1999-10-14 09:10:25 +00:00
2017-06-16 21:38:57 +02:00
1999-10-14 09:10:25 +00:00
2017-06-16 21:38:57 +02:00
2002-03-25 12:10:14 +00:00
2017-06-16 21:38:57 +02:00
2004-08-31 08:42:17 +00:00
2017-06-16 21:38:57 +02:00
2005-01-04 21:50:05 +00:00
2017-06-16 21:38:57 +02:00
2006-01-04 14:03:10 +00:00
2017-06-16 21:38:57 +02:00
2017-06-16 21:38:57 +02:00
2005-06-09 08:18:24 +00:00
2017-06-16 21:38:57 +02:00
2003-09-10 10:51:05 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
1999-08-29 21:02:19 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
2003-11-25 18:29:55 +00:00
2017-06-16 21:38:57 +02:00
2003-06-13 10:05:56 +00:00
2017-06-16 21:38:57 +02:00
2003-06-13 10:05:56 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00
2022-01-16 14:07:17 +01:00
2022-01-16 14:07:17 +01:00
2022-01-16 14:07:17 +01:00
2022-01-16 14:07:17 +01:00
2022-01-16 14:07:17 +01:00
2022-01-16 14:07:17 +01:00
2022-01-16 14:07:17 +01:00
2022-01-16 14:07:17 +01:00
2000-08-20 15:32:58 +00:00
2017-06-16 21:38:57 +02:00
2000-08-27 21:12:29 +00:00
2017-06-16 21:38:57 +02:00
2001-06-28 12:13:56 +00:00
2017-06-16 21:38:57 +02:00
2003-11-28 09:39:10 +00:00
2017-06-16 21:38:57 +02:00
2003-07-16 21:18:19 +00:00
2017-06-16 21:38:57 +02:00
2003-11-28 09:39:10 +00:00
2017-06-16 21:38:57 +02:00
2000-10-15 10:02:56 +00:00
2017-06-16 21:38:57 +02:00
2005-07-06 15:17:38 +00:00
2017-06-16 21:38:57 +02:00
2001-09-11 09:27:09 +00:00
2017-06-16 21:38:57 +02:00
2006-07-13 13:07:11 +00:00
2017-06-16 21:38:57 +02:00
2004-05-09 23:48:39 +00:00
2017-06-16 21:38:57 +02:00
2001-04-10 16:38:06 +00:00
2017-06-16 21:38:57 +02:00
2000-03-14 18:30:20 +00:00
2017-06-16 21:38:57 +02:00