From ffb905a4b2a53b20ba84384b476743ff871f08db Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 21 Sep 2015 18:27:59 +0200 Subject: do not skip the second 2 byte sequence on invalid surrogates --- libass/ass_utils.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libass/ass_utils.c b/libass/ass_utils.c index fef8030..ce57bb3 100644 --- a/libass/ass_utils.c +++ b/libass/ass_utils.c @@ -437,11 +437,12 @@ static uint32_t ass_read_utf16be(uint8_t **src, size_t bytes) goto too_short; uint32_t cp2 = ((*src)[0] << 8) | (*src)[1]; - *src += 2; if (cp2 < 0xDC00 || cp2 > 0xDFFF) return 0xFFFD; + *src += 2; + cp = 0x10000 + ((cp - 0xD800) << 10) + (cp2 - 0xDC00); } -- cgit v1.2.3