summaryrefslogtreecommitdiff
path: root/src/rufl_init.c
diff options
context:
space:
mode:
authorJohn-Mark Bell <jmb@netsurf-browser.org>2021-08-07 01:27:06 +0100
committerJohn-Mark Bell <jmb@netsurf-browser.org>2021-08-08 02:02:53 +0100
commit282b342fe51a2e9856b5448c30679ea8b49f18c5 (patch)
treeb0257dab5b447e2c720ebbfed3f99fa7c6572cdc /src/rufl_init.c
parentb7d315249f56dffa626354a4feaea5135f930e8a (diff)
downloadlibrufl-282b342fe51a2e9856b5448c30679ea8b49f18c5.tar.gz
librufl-282b342fe51a2e9856b5448c30679ea8b49f18c5.tar.bz2
Pave the way for astral character support.
No functional change, but redefine the meaning of the old "size" member of the rufl_character_set structure to allow for the addition of extension structures in future. This change is backwards compatible as it is reusing previously unused bits in the size field (which will be set to zero in all existing RUfl_caches). Rename the "size" field to "metadata" which better reflects its new usage. Update rufl_character_set_test and rufl_dump_state to follow this change (and fix up their parameter types while we're here).
Diffstat (limited to 'src/rufl_init.c')
-rw-r--r--src/rufl_init.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/rufl_init.c b/src/rufl_init.c
index b441edc..3ae4ffa 100644
--- a/src/rufl_init.c
+++ b/src/rufl_init.c
@@ -575,9 +575,9 @@ rufl_code rufl_init_scan_font(unsigned int font_index)
}
/* shrink-wrap */
- charset->size = offsetof(struct rufl_character_set, block) +
+ charset->metadata = offsetof(struct rufl_character_set, block) +
32 * last_used;
- charset2 = realloc(charset, charset->size);
+ charset2 = realloc(charset, PLANE_SIZE(charset->metadata));
if (!charset2) {
free(charset);
return rufl_OUT_OF_MEMORY;
@@ -696,9 +696,9 @@ rufl_code rufl_init_scan_font_no_enumerate(unsigned int font_index)
}
/* shrink-wrap */
- charset->size = offsetof(struct rufl_character_set, block) +
+ charset->metadata = offsetof(struct rufl_character_set, block) +
32 * last_used;
- charset2 = realloc(charset, charset->size);
+ charset2 = realloc(charset, PLANE_SIZE(charset->metadata));
if (!charset2) {
free(charset);
return rufl_OUT_OF_MEMORY;
@@ -885,9 +885,9 @@ rufl_code rufl_init_scan_font_old(unsigned int font_index)
}
/* shrink-wrap */
- charset->size = offsetof(struct rufl_character_set, block) +
+ charset->metadata = offsetof(struct rufl_character_set, block) +
32 * last_used;
- charset2 = realloc(charset, charset->size);
+ charset2 = realloc(charset, PLANE_SIZE(charset->metadata));
if (!charset2) {
for (i = 0; i < num_umaps; i++)
free((umap + i)->encoding);
@@ -1255,7 +1255,8 @@ rufl_code rufl_save_cache(void)
/* character set */
if (fwrite(rufl_font_list[i].charset,
- rufl_font_list[i].charset->size, 1, fp) != 1) {
+ PLANE_SIZE(rufl_font_list[i].charset->metadata),
+ 1, fp) != 1) {
LOG("fwrite: 0x%x: %s", errno, strerror(errno));
fclose(fp);
return rufl_OK;
@@ -1430,7 +1431,7 @@ rufl_code rufl_load_cache(void)
return rufl_OUT_OF_MEMORY;
}
- charset->size = size;
+ charset->metadata = size;
if (fread(charset->index, size - sizeof size, 1, fp) != 1) {
if (feof(fp))
LOG("fread: %s", "unexpected eof");