chiark / gitweb /
Move SYM_NAME into the header file. Fix bugs.
[mLib] / sym.c
diff --git a/sym.c b/sym.c
index 2cdbc249e7672f8a7a36ced9e4555148aaca060f..5c18a18f8696915f91d3a6929d9b5e4e3786e5e0 100644 (file)
--- 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
  *
 /*----- 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
  *
  */
 
 
 #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;