X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/7989bb4526f860595a21d9a5afc3df5ce185b529..a5d14edee10f6c07549259fd145bda7d00c0d26f:/sym.c?ds=inline 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;