summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn-Mark Bell <jmb@netsurf-browser.org>2022-05-22 21:39:33 +0100
committerJohn-Mark Bell <jmb@netsurf-browser.org>2022-05-22 21:42:04 +0100
commit7b1ee98c53be125756b16d35cbd2b8c9f4ffbe15 (patch)
treeb338065c4637cc5bcb8d91ebf7fc2fc424f36041
parente58ebde8498df388975cf050382e4e9aadf2f050 (diff)
downloadlibrufl-7b1ee98c53be125756b16d35cbd2b8c9f4ffbe15.tar.gz
librufl-7b1ee98c53be125756b16d35cbd2b8c9f4ffbe15.tar.bz2
Add test for fonts with no encodings at all
This exposed a failure to clean up any FontManager error occurring when attempting to load this kind of font. Additionally, it also exposed a failure to initialise the umap count in an internal structure. This was probably harmless in reality, but caused the test to fail.
-rw-r--r--src/rufl_init.c3
-rw-r--r--test/data/oldfminit/INDEX1
-rw-r--r--test/data/oldfminit/nomapping.cfg19
3 files changed, 23 insertions, 0 deletions
diff --git a/src/rufl_init.c b/src/rufl_init.c
index 748c306..b7f4042 100644
--- a/src/rufl_init.c
+++ b/src/rufl_init.c
@@ -364,6 +364,7 @@ rufl_code rufl_init_add_font(const char *identifier, const char *local_name)
return rufl_OUT_OF_MEMORY;
rufl_font_list[rufl_font_list_entries].charset = NULL;
rufl_font_list[rufl_font_list_entries].umap = NULL;
+ rufl_font_list[rufl_font_list_entries].num_umaps = 0;
rufl_font_list_entries++;
/* determine family, weight, and slant */
@@ -891,6 +892,7 @@ rufl_code rufl_init_scan_font_old(unsigned int font_index)
error_FONT_TOO_MANY_CHUNKS)) {
/* Ensure we reuse the currently allocated umap */
num_umaps--;
+ rufl_fm_error = NULL;
} else if (code != rufl_OK) {
LOG("rufl_init_scan_font_in_encoding(\"%s\", \"%s\", "
"...): 0x%x (0x%x: %s)",
@@ -957,6 +959,7 @@ rufl_code rufl_init_scan_font_old(unsigned int font_index)
error_FONT_TOO_MANY_CHUNKS)) {
/* Ensure we reuse the currently allocated umap */
num_umaps--;
+ rufl_fm_error = NULL;
} else if (code != rufl_OK) {
LOG("rufl_init_scan_font_in_encoding(\"%s\", NULL, "
"...): 0x%x (0x%x: %s)",
diff --git a/test/data/oldfminit/INDEX b/test/data/oldfminit/INDEX
index b6a3e01..e804842 100644
--- a/test/data/oldfminit/INDEX
+++ b/test/data/oldfminit/INDEX
@@ -3,3 +3,4 @@
# Test Description
latin1.cfg Simple Latin1 Encoding
+nomapping.cfg Fonts with no mapping
diff --git a/test/data/oldfminit/nomapping.cfg b/test/data/oldfminit/nomapping.cfg
new file mode 100644
index 0000000..18de2fb
--- /dev/null
+++ b/test/data/oldfminit/nomapping.cfg
@@ -0,0 +1,19 @@
+# Configuration for fonts with no mapping
+
+%expumaps Corpus.Bold 0
+%expumaps Corpus.Bold.Oblique 0
+%expumaps Corpus.Medium 1
+%expumaps Corpus.Medium.Oblique 0
+%expumaps Homerton.Bold 0
+%expumaps Homerton.Bold.Oblique 0
+%expumaps Homerton.Medium 1
+%expumaps Homerton.Medium.Oblique 0
+%expumaps Trinity.Bold 0
+%expumaps Trinity.Bold.Italic 0
+%expumaps Trinity.Medium 1
+%expumaps Trinity.Medium.Italic 0
+
+# Font name Encoding name Filename
+Corpus.Medium Latin1 Latin1
+Homerton.Medium Latin1 Latin1
+Trinity.Medium Latin1 Latin1