From abf2e7d050ef0355a6fbb199ddd11a5bc4ce848d Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 25 Jul 2014 14:49:27 -0400 Subject: [PATCH] Don't get stuck on invalid UTF-16 Replaces invalid unicode with replacement character U+FFFD and always makes forward progress. Bug: 15849380 Change-Id: Ic59ef6c64b0f5c4450bcae61597adcc269d6e7c5 --- engine/src/flutter/libs/minikin/Layout.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/engine/src/flutter/libs/minikin/Layout.cpp b/engine/src/flutter/libs/minikin/Layout.cpp index 0715c76645..6b019d401c 100644 --- a/engine/src/flutter/libs/minikin/Layout.cpp +++ b/engine/src/flutter/libs/minikin/Layout.cpp @@ -397,11 +397,10 @@ static hb_codepoint_t decodeUtf16(const uint16_t* chars, size_t len, ssize_t* it const hb_codepoint_t delta = (0xd800 << 10) + 0xdc00 - 0x10000; return (((hb_codepoint_t)v) << 10) + v2 - delta; } - (*iter) -= 2; - return ~0u; + (*iter) -= 1; + return 0xFFFDu; } else { - (*iter)--; - return ~0u; + return 0xFFFDu; } } else { return v;