=================================================================== RCS file: /cvs/mandoc/Attic/hash.c,v retrieving revision 1.3 retrieving revision 1.5 diff -u -p -r1.3 -r1.5 --- mandoc/Attic/hash.c 2008/12/23 05:30:49 1.3 +++ mandoc/Attic/hash.c 2009/01/20 13:44:05 1.5 @@ -1,4 +1,4 @@ -/* $Id: hash.c,v 1.3 2008/12/23 05:30:49 kristaps Exp $ */ +/* $Id: hash.c,v 1.5 2009/01/20 13:44:05 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -25,7 +25,13 @@ #include "private.h" +/* + * Routines for the perfect-hash hashtable used by the parser to look up + * tokens by their string-ified names (`.Fl' -> MDOC_Fl). The + * allocation penalty for this is 27 * 26 * sizeof(ptr). + */ + void mdoc_tokhash_free(void *htab) { @@ -112,6 +118,8 @@ mdoc_tokhash_find(const void *arg, const char *tmp) minor = tmp[1] - 97; ind = (major * 27) + minor; + if (ind < 0 || ind >= (27 * 26)) + return(MDOC_MAX); if (NULL == htab[ind]) return(MDOC_MAX);