summaryrefslogtreecommitdiff
path: root/src/houdini_html_u.c
diff options
context:
space:
mode:
authorNick Wellnhofer <wellnhofer@aevum.de>2015-01-11 01:08:02 +0100
committerNick Wellnhofer <wellnhofer@aevum.de>2015-01-12 02:11:16 +0100
commit491b7775b273daf1325a1b050345dbf75b394315 (patch)
treeef1e1b3e2f60e80c71c09948196b37b6f7585eb4 /src/houdini_html_u.c
parent009fe0141445275c495d0825a1d5c0a374fc9d90 (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.c3
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;
}