FT_Error TA_sfnt_build_gasp_table(SFNT* sfnt, FONT* font) { FT_Error error; FT_Byte* gasp_buf; error = TA_sfnt_add_table_info(sfnt); if (error) return error; error = TA_table_build_gasp(&gasp_buf); if (error) return error; /* in case of success, `gasp_buf' gets linked */ /* and is eventually freed in `TA_font_unload' */ error = TA_font_add_table(font, &sfnt->table_infos[sfnt->num_table_infos - 1], TTAG_gasp, GASP_LEN, gasp_buf); if (error) { free(gasp_buf); return error; } return FT_Err_Ok; }
FT_Error TA_sfnt_build_gasp_table(SFNT* sfnt, FONT* font) { FT_Error error; FT_Byte* gasp_buf; error = TA_sfnt_add_table_info(sfnt); if (error) goto Exit; if (font->gasp_idx != MISSING) { sfnt->table_infos[sfnt->num_table_infos - 1] = font->gasp_idx; goto Exit; } error = TA_table_build_gasp(&gasp_buf); if (error) goto Exit; /* in case of success, `gasp_buf' gets linked */ /* and is eventually freed in `TA_font_unload' */ error = TA_font_add_table(font, &sfnt->table_infos[sfnt->num_table_infos - 1], TTAG_gasp, GASP_LEN, gasp_buf); if (error) free(gasp_buf); else font->gasp_idx = sfnt->table_infos[sfnt->num_table_infos - 1]; Exit: return error; }