diff options
author | John-Mark Bell <jmb@netsurf-browser.org> | 2021-08-07 01:27:06 +0100 |
---|---|---|
committer | John-Mark Bell <jmb@netsurf-browser.org> | 2021-08-08 02:02:53 +0100 |
commit | 282b342fe51a2e9856b5448c30679ea8b49f18c5 (patch) | |
tree | b0257dab5b447e2c720ebbfed3f99fa7c6572cdc /src/rufl_init.c | |
parent | b7d315249f56dffa626354a4feaea5135f930e8a (diff) | |
download | librufl-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.c | 17 |
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"); |