summaryrefslogtreecommitdiffstatshomepage
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
commit5410a79872e5e765de34d19df2959124707f5c9f (patch)
tree6cb9653286db8f09f7ab6c8fa9ea7fb94dfb1d18 /hash.c
parentebddc53ba819b61acd3de13e5cd9c07e9c28297d (diff)
downloadmandoc-5410a79872e5e765de34d19df2959124707f5c9f.tar.gz
mandoc-5410a79872e5e765de34d19df2959124707f5c9f.tar.zst
mandoc-5410a79872e5e765de34d19df2959124707f5c9f.zip
Small speed-ups in hash lookup.
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/hash.c b/hash.c
index cee66332..9fca7508 100644
--- a/hash.c
+++ b/hash.c
@@ -1,4 +1,4 @@
-/* $Id: hash.c,v 1.7 2009/03/08 11:41:22 kristaps Exp $ */
+/* $Id: hash.c,v 1.8 2009/03/08 20:29:45 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -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);
}