summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn-Mark Bell <jmb@netsurf-browser.org>2022-05-22 03:10:13 +0100
committerJohn-Mark Bell <jmb@netsurf-browser.org>2022-05-22 03:10:13 +0100
commit20e35970679f5aab5a4dd8e60747af24ddac998f (patch)
tree9235aa0af0d39c73175e57cea2e22373e12cbe5a
parent8cd266be4e1e610573fd81a875a7479cebb2edfe (diff)
downloadlibrufl-20e35970679f5aab5a4dd8e60747af24ddac998f.tar.gz
librufl-20e35970679f5aab5a4dd8e60747af24ddac998f.tar.bz2
Add checks for reinitialising library.
This will cause the second initialisation attempt to load the cache file. In doing so, we discover that cache loading on non-32bit platforms didn't work -- fix that, too.
-rw-r--r--src/rufl_init.c2
-rw-r--r--src/rufl_quit.c12
-rw-r--r--test/oldfminit.c8
-rw-r--r--test/olducsinit.c8
-rw-r--r--test/ucsinit.c8
5 files changed, 33 insertions, 5 deletions
diff --git a/src/rufl_init.c b/src/rufl_init.c
index 13b9509..40eb00f 100644
--- a/src/rufl_init.c
+++ b/src/rufl_init.c
@@ -1590,7 +1590,7 @@ rufl_code rufl_load_cache(void)
struct rufl_font_list_entry *entry;
struct rufl_character_set *charset = NULL, *cur_charset;
struct rufl_unicode_map *umap = NULL;
- unsigned int num_umaps = 0;
+ size_t num_umaps = 0;
fp = rufl_open_cache("rb");
if (!fp)
diff --git a/src/rufl_quit.c b/src/rufl_quit.c
index e2daa8c..039229c 100644
--- a/src/rufl_quit.c
+++ b/src/rufl_quit.c
@@ -33,23 +33,27 @@ void rufl_quit(void)
}
}
free(rufl_font_list);
- rufl_font_list = 0;
+ rufl_font_list = NULL;
+ rufl_font_list_entries = 0;
for (i = 0; i != rufl_family_list_entries; i++)
free((void *) rufl_family_list[i]);
free(rufl_family_list);
free(rufl_family_map);
- rufl_family_list = 0;
+ rufl_family_map = NULL;
+ rufl_family_list = NULL;
+ rufl_family_list_entries = 0;
for (i = 0; i != rufl_CACHE_SIZE; i++) {
if (rufl_cache[i].font != rufl_CACHE_NONE) {
xfont_lose_font(rufl_cache[i].f);
rufl_cache[i].font = rufl_CACHE_NONE;
}
- }
+ }
+ rufl_cache_time = 0;
free(rufl_family_menu);
- rufl_family_menu = 0;
+ rufl_family_menu = NULL;
rufl_substitution_table_fini();
}
diff --git a/test/oldfminit.c b/test/oldfminit.c
index 1df8880..23eb501 100644
--- a/test/oldfminit.c
+++ b/test/oldfminit.c
@@ -96,6 +96,14 @@ int main(int argc, const char **argv)
rufl_quit();
+ /* Reinit -- should load cache */
+ assert(rufl_OK == rufl_init());
+ assert(NULL == rufl_fm_error);
+ assert(3 == rufl_family_list_entries);
+ assert(NULL != rufl_family_menu);
+ /* Done for real this time */
+ rufl_quit();
+
printf("PASS\n");
return 0;
diff --git a/test/olducsinit.c b/test/olducsinit.c
index 1d5462b..aa2d874 100644
--- a/test/olducsinit.c
+++ b/test/olducsinit.c
@@ -96,6 +96,14 @@ int main(int argc, const char **argv)
rufl_quit();
+ /* Reinit -- should load cache */
+ assert(rufl_OK == rufl_init());
+ assert(NULL == rufl_fm_error);
+ assert(3 == rufl_family_list_entries);
+ assert(NULL != rufl_family_menu);
+ /* Done for real this time */
+ rufl_quit();
+
printf("PASS\n");
return 0;
diff --git a/test/ucsinit.c b/test/ucsinit.c
index 44f70cb..c0fc06f 100644
--- a/test/ucsinit.c
+++ b/test/ucsinit.c
@@ -96,6 +96,14 @@ int main(int argc, const char **argv)
rufl_quit();
+ /* Reinit -- should load cache */
+ assert(rufl_OK == rufl_init());
+ assert(NULL == rufl_fm_error);
+ assert(3 == rufl_family_list_entries);
+ assert(NULL != rufl_family_menu);
+ /* Done for real this time */
+ rufl_quit();
+
printf("PASS\n");
return 0;