@@ -198,5 +198,10 @@ _hs_text_decode_utf8(uint16_t *dest, size_t *destoff,
198198{
199199 uint32_t codepoint;
200200 uint32_t state = UTF8_ACCEPT;
201− return _hs_text_decode_utf8_state(dest, destoff, src, srcend, &codepoint, &state);
201+ uint8_t const *ret = _hs_text_decode_utf8_state(dest, destoff, src, srcend,
202+ &codepoint, &state);
203+ /* Back up if we have an incomplete encoding */
204+ if (state != UTF8_ACCEPT && state != UTF8_REJECT)
205+ ret -= 1;
206+ return ret;
202207}