From a5d14edee10f6c07549259fd145bda7d00c0d26f Mon Sep 17 00:00:00 2001 Message-Id: From: Mark Wooding Date: Thu, 26 Nov 1998 19:27:34 +0000 Subject: [PATCH] Move SYM_NAME into the header file. Fix bugs. Organization: Straylight/Edgeware From: mdw --- sym.c | 20 ++++++++++---------- sym.h | 16 +++++++++++++--- 2 files changed, 23 insertions(+), 13 deletions(-) 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; diff --git a/sym.h b/sym.h index 35a3fa6..82668a1 100644 --- a/sym.h +++ b/sym.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: sym.h,v 1.1 1998/06/17 23:44:42 mdw Exp $ + * $Id: sym.h,v 1.2 1998/11/26 19:27:34 mdw Exp $ * * Symbol table management * @@ -29,8 +29,11 @@ /*----- Revision history --------------------------------------------------* * * $Log: sym.h,v $ - * Revision 1.1 1998/06/17 23:44:42 mdw - * Initial revision + * Revision 1.2 1998/11/26 19:27:34 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 * */ @@ -81,6 +84,13 @@ typedef struct sym_base { size_t len; /* Length of the symbol's name */ } sym_base; +/* --- A macro to pick a symbol's name out from the mess --- */ + +#define SYM_NAME(sy) \ + (((sym_base *)(sy))->len > SYM_BUFSZ ? \ + ((sym_base *)(sy))->name.p : \ + ((sym_base *)(sy))->name.b) + /* --- An iterator block --- */ typedef struct sym_iter { -- [mdw]