diff options
author | Nick Wellnhofer <wellnhofer@aevum.de> | 2015-01-11 01:08:02 +0100 |
---|---|---|
committer | Nick Wellnhofer <wellnhofer@aevum.de> | 2015-01-12 02:11:16 +0100 |
commit | 491b7775b273daf1325a1b050345dbf75b394315 (patch) | |
tree | ef1e1b3e2f60e80c71c09948196b37b6f7585eb4 /src/houdini_html_u.c | |
parent | 009fe0141445275c495d0825a1d5c0a374fc9d90 (diff) |
Reduce size of gperf entity table
Don't store length of UTF-8 string. It can be computed by
NULL-terminating strings shorter than 4 bytes and using strnlen.
Use gperf's string pool option. This allows to use an 'int' index into the
string pool instead of a pointer and is helpful on 64-bit systems.
Shaves about 75 KB off the 32-bit binaries on Linux and 128 KB off the
64-bit binaries on OS X.
Diffstat (limited to 'src/houdini_html_u.c')
-rw-r--r-- | src/houdini_html_u.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/houdini_html_u.c b/src/houdini_html_u.c index 9a2e262..ecd7faa 100644 --- a/src/houdini_html_u.c +++ b/src/houdini_html_u.c @@ -55,7 +55,8 @@ houdini_unescape_ent(cmark_strbuf *ob, const uint8_t *src, size_t size) const struct html_ent *entity = find_entity((char *)src, i); if (entity != NULL) { - cmark_strbuf_put(ob, entity->utf8, entity->utf8_len); + size_t len = strnlen((const char *)entity->utf8, 4); + cmark_strbuf_put(ob, entity->utf8, len); return i + 1; } |