From 5841bd012df892ce9c48f45781fd9018a6952de5 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Tue, 9 Nov 2021 20:42:52 +0900 Subject: [PATCH] Fix some testcase fails for 14c265a1 Add an extra code to ignore an error of FT_Get_MM_Var() only when FT_MM_Var variable isn't used in any case. --- src/fcfreetype.c | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/fcfreetype.c b/src/fcfreetype.c index 70819e0..c477774 100644 --- a/src/fcfreetype.c +++ b/src/fcfreetype.c @@ -1232,6 +1232,7 @@ FcFreeTypeQueryFaceInternal (const FT_Face face, int st; FcBool symbol = FcFalse; + FT_Error ftresult; FcInitDebug (); /* We might be called with no initizalization whatsoever. */ @@ -1257,11 +1258,13 @@ FcFreeTypeQueryFaceInternal (const FT_Face face, goto bail1; } - if (FT_Get_MM_Var (face, &master)) - goto bail1; + ftresult = FT_Get_MM_Var (face, &master); if (id >> 16) { + if (ftresult) + goto bail1; + if (id >> 16 == 0x8000) { /* Query variable font itself. */ @@ -1353,19 +1356,25 @@ FcFreeTypeQueryFaceInternal (const FT_Face face, } else { - unsigned int i; - for (i = 0; i < master->num_axis; i++) - { - switch (master->axis[i].tag) - { + if (!ftresult) + { + unsigned int i; + for (i = 0; i < master->num_axis; i++) + { + switch (master->axis[i].tag) + { case FT_MAKE_TAG ('o','p','s','z'): - if (!FcPatternObjectAddDouble (pat, FC_SIZE_OBJECT, master->axis[i].def / (double) (1U << 16))) - goto bail1; - variable_size = FcTrue; - break; - } - - } + if (!FcPatternObjectAddDouble (pat, FC_SIZE_OBJECT, master->axis[i].def / (double) (1U << 16))) + goto bail1; + variable_size = FcTrue; + break; + } + } + } + else + { + /* ignore an error of FT_Get_MM_Var() */ + } } if (!FcPatternObjectAddBool (pat, FC_VARIABLE_OBJECT, variable)) goto bail1;