summaryrefslogtreecommitdiff
path: root/src/sfntfont.c
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-09-23 10:07:38 +0800
committerPo Lu <luangruo@yahoo.com>2023-09-23 10:07:38 +0800
commit5bd6f963f682c7ab332d8c640e67ff66a6bb4a96 (patch)
tree7fb459d8ac09fe4fded088a0d09e3a89bf17181b /src/sfntfont.c
parent3a1e65bd8ead5f8376e2794500e57315d294c5aa (diff)
downloademacs-5bd6f963f682c7ab332d8c640e67ff66a6bb4a96.tar.gz
Correct comparisons between size_t and ssize_t
* src/sfnt.c (sfnt_read_table_directory, sfnt_read_cmap_format_0) (sfnt_read_cmap_format_2, sfnt_read_cmap_format_4) (sfnt_read_cmap_format_6, sfnt_read_cmap_format_8) (sfnt_read_cmap_format_12, sfnt_read_cmap_format_14) (sfnt_read_cmap_table_1, sfnt_read_cmap_table) (sfnt_read_head_table, sfnt_read_hhea_table, sfnt_read_maxp_table) (sfnt_read_glyf_table, sfnt_read_hmtx_table, sfnt_read_name_table) (sfnt_read_meta_table, sfnt_read_ttc_header) (sfnt_read_default_uvs_table, sfnt_read_nondefault_uvs_table) (sfnt_read_fvar_table, sfnt_read_gvar_table, sfnt_read_avar_table) (sfnt_read_cvar_table, sfnt_read_OS_2_table): * src/sfntfont.c (sfnt_enum_font): Revise code written with only signed `long' in mind to properly compare size_t values with ssize_t.
Diffstat (limited to 'src/sfntfont.c')
-rw-r--r--src/sfntfont.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/sfntfont.c b/src/sfntfont.c
index db527d7d4af..d556092db12 100644
--- a/src/sfntfont.c
+++ b/src/sfntfont.c
@@ -1144,7 +1144,9 @@ sfnt_enum_font_1 (int fd, const char *file,
int
sfnt_enum_font (const char *file)
{
- int fd, rc;
+ int fd;
+ int rc;
+ off_t seek;
struct sfnt_offset_subtable *subtables;
struct sfnt_ttc_header *ttc;
size_t i;
@@ -1175,8 +1177,9 @@ sfnt_enum_font (const char *file)
for (i = 0; i < ttc->num_fonts; ++i)
{
- if (lseek (fd, ttc->offset_table[i], SEEK_SET)
- != ttc->offset_table[i])
+ seek = lseek (fd, ttc->offset_table[i], SEEK_SET);
+
+ if (seek == -1 || seek != ttc->offset_table[i])
continue;
subtables = sfnt_read_table_directory (fd);