From 51b2a709c5a92186adfdae8a7fb28c67251279ba Mon Sep 17 00:00:00 2001 From: Po Lu Date: Mon, 22 Jan 2024 16:01:13 +0800 Subject: [PATCH] Do not overwrite flags of succeeding points during generic move * src/sfnt.c (sfnt_move): Save FLAGS and restore it after X axis movement loop. (cherry picked from commit b2366900d4981c13152ef7fe15a44ad9b4b7663b) --- src/sfnt.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/sfnt.c b/src/sfnt.c index 7b4c5544dc1..ce7765e8f3e 100644 --- a/src/sfnt.c +++ b/src/sfnt.c @@ -10776,6 +10776,7 @@ sfnt_move (sfnt_f26dot6 *restrict x, sfnt_f26dot6 *restrict y, sfnt_f26dot6 versor, k; sfnt_f2dot14 dot_product; size_t num; + unsigned char *flags_start; dot_product = interpreter->state.vector_dot_product; @@ -10788,6 +10789,10 @@ sfnt_move (sfnt_f26dot6 *restrict x, sfnt_f26dot6 *restrict y, other out, so the result is 26.6. */ versor = interpreter->state.freedom_vector.x; + /* Save flags that it may be restored for the second Y axis + loop. */ + flags_start = flags; + if (versor) { /* Move along X axis, converting the distance to the freedom @@ -10807,6 +10812,7 @@ sfnt_move (sfnt_f26dot6 *restrict x, sfnt_f26dot6 *restrict y, } } + flags = flags_start; versor = interpreter->state.freedom_vector.y; if (versor) -- 2.39.5