aboutsummaryrefslogtreecommitdiffstats
path: root/libskrift_open_font_fd.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2021-08-05 17:30:53 +0200
committerMattias Andrée <maandree@kth.se>2021-08-05 17:30:53 +0200
commit210d6ad784d55362d24a22cd7e07725a794d46cd (patch)
treed4a0359da4cc1dad27266994954b608a1ab1ff51 /libskrift_open_font_fd.c
parentdemo: refuse to write image to terminal (diff)
downloadlibskrift-210d6ad784d55362d24a22cd7e07725a794d46cd.tar.gz
libskrift-210d6ad784d55362d24a22cd7e07725a794d46cd.tar.bz2
libskrift-210d6ad784d55362d24a22cd7e07725a794d46cd.tar.xz
minor fixes and cleanups, and update to use new version of libgrapheme and add text length parameter instead of using NUL-termination
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'libskrift_open_font_fd.c')
-rw-r--r--libskrift_open_font_fd.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libskrift_open_font_fd.c b/libskrift_open_font_fd.c
index c00422e..e134cd8 100644
--- a/libskrift_open_font_fd.c
+++ b/libskrift_open_font_fd.c
@@ -13,6 +13,7 @@ libskrift_open_font_fd(LIBSKRIFT_FONT **fontp, int fd)
saved_errno = errno;
if (fstat(fd, &st) < 0 || !st.st_size || !S_ISREG(st.st_mode)) {
+ fallback:
for (;;) {
if (off + 2048 > size) {
size += 8192;
@@ -39,6 +40,8 @@ libskrift_open_font_fd(LIBSKRIFT_FONT **fontp, int fd)
errno = saved_errno;
} else {
mem = mmap(NULL, (size_t)st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
+ if (mem == MAP_FAILED || !mem)
+ goto fallback;
size = (size_t)st.st_size;
mmapped = 1;
}