summaryrefslogtreecommitdiffstats
path: root/hash.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-03-08 20:29:45 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-03-08 20:29:45 +0000
commit946b90960143fc668d4b43c0acd0f2b0918fe14c (patch)
treef9df5c2aecdeb1a9481083ec322a5b171f9135cb /hash.c
parent650f3165cb39db49cbe5ec2a934c0c95fbf6ae0c (diff)
downloadmandoc-946b90960143fc668d4b43c0acd0f2b0918fe14c.tar.gz
Small speed-ups in hash lookup.
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/hash.c b/hash.c
index b70f7cf7..98f1d4c7 100644
--- a/hash.c
+++ b/hash.c
@@ -95,6 +95,8 @@ mdoc_tokhash_find(const void *arg, const char *tmp)
if (0 == tmp[0] || 0 == tmp[1])
return(MDOC_MAX);
+ if (tmp[2] && tmp[3])
+ return(MDOC_MAX);
if ( ! (tmp[0] == 37 || (tmp[0] >= 65 && tmp[0] <= 90)))
return(MDOC_MAX);
@@ -128,13 +130,10 @@ mdoc_tokhash_find(const void *arg, const char *tmp)
assert(0 == (size_t)slot % sizeof(struct mdoc_macro));
slot /= sizeof(struct mdoc_macro);
- /*
- * FIXME: is this necessary, or do we only need to check the
- * remaining characters (2+)?
- */
+ if (0 == tmp[2])
+ return(slot);
- if (0 != strcmp(mdoc_macronames[slot], tmp))
- return(MDOC_MAX);
- return(slot);
+ assert(0 == tmp[3]);
+ return(tmp[2] == mdoc_macronames[slot][2] ? slot : MDOC_MAX);
}