X-Git-Url: https://git.distorted.org.uk/~mdw/mLib/blobdiff_plain/0875b58fcccadd756e11487185c2ac1d3ed8ab4d..1c66031eaa646ea09f79e6af0db473b571e47363:/sym.c?ds=sidebyside diff --git a/sym.c b/sym.c index 2cdbc24..5c18a18 100644 --- a/sym.c +++ b/sym.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: sym.c,v 1.1 1998/06/17 23:44:42 mdw Exp $ + * $Id: sym.c,v 1.2 1998/11/26 19:27:33 mdw Exp $ * * Symbol table management * @@ -29,8 +29,11 @@ /*----- Revision history --------------------------------------------------* * * $Log: sym.c,v $ - * Revision 1.1 1998/06/17 23:44:42 mdw - * Initial revision + * Revision 1.2 1998/11/26 19:27:33 mdw + * Move SYM_NAME into the header file. Fix bugs. + * + * Revision 1.1.1.1 1998/06/17 23:44:42 mdw + * Initial version of mLib * */ @@ -75,11 +78,6 @@ #define SYM_LIMIT(n) (((n) * 3) >> 2) /* Load factor for growing table */ -/*----- Useful macros -----------------------------------------------------*/ - -#define SYM_NAME(sy) \ - ((sy)->len > SYM_BUFSZ ? (sy)->name.p : (sy)->name.b) - /*----- Main code ---------------------------------------------------------*/ /* --- @sym_createTable@ --- * @@ -247,7 +245,9 @@ void *sym_find(sym_table *t, const char *n, long l, size_t sz, unsigned *f) /* --- Consider growing the array --- */ - if (!--t->c) { + if (t->c) + t->c--; + if (!t->c) { unsigned long m = t->mask + 1; /* Next set bit in has word */ sym_base *p, *q, *r; /* More useful pointers */ size_t i, lim; /* Loop counter and limit */ @@ -262,7 +262,7 @@ void *sym_find(sym_table *t, const char *n, long l, size_t sz, unsigned *f) } CATCH switch (exc_type) { case EXC_NOMEM: TRACK_POP; - return (p); + return (bin->next); default: TRACK_POP; RETHROW;