chiark / gitweb /
Change `-ise' to `-ize' throughout.
[mLib] / sym.c
diff --git a/sym.c b/sym.c
index 2cdbc249e7672f8a7a36ced9e4555148aaca060f..965da3f3c67e7cc1e3f29139ad094b8301e5e3e6 100644 (file)
--- a/sym.c
+++ b/sym.c
@@ -1,36 +1,49 @@
 /* -*-c-*-
  *
- * $Id: sym.c,v 1.1 1998/06/17 23:44:42 mdw Exp $
+ * $Id: sym.c,v 1.5 1999/05/13 22:48:37 mdw Exp $
  *
  * Symbol table management
  *
  * (c) 1998 Straylight/Edgeware
  */
 
-/*----- Licensing notice --------------------------------------------------*
+/*----- Licensing notice --------------------------------------------------* 
  *
  * This file is part of the mLib utilities library.
  *
  * mLib is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
  * mLib is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with mLib; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with mLib; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
  */
 
 /*----- Revision history --------------------------------------------------*
  *
  * $Log: sym.c,v $
- * Revision 1.1  1998/06/17 23:44:42  mdw
- * Initial revision
+ * Revision 1.5  1999/05/13 22:48:37  mdw
+ * Twiddle the extension threshold.  Change `-ise' to `-ize' throughout.
+ *
+ * Revision 1.4  1999/05/06 19:51:35  mdw
+ * Reformatted the LGPL notice a little bit.
+ *
+ * Revision 1.3  1999/05/05 18:50:31  mdw
+ * Change licensing conditions to LGPL.
+ *
+ * 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
  *
  */
 
  * and the limit %$l$% satisfy the relation %$n < bl$%; if a new item is
  * added to the table and this relation is found to be false, the table is
  * doubled in size.
- *
- * The current function gives %$l = {3n \over 4}$%, which appears to be
- * reasonable on the face of things.
  */
 
-#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)
+#define SYM_LIMIT(n) ((n) * 4)         /* Load factor for growing table */
 
 /*----- Main code ---------------------------------------------------------*/
 
 /* --- @sym_createTable@ --- *
  *
- * Arguments:  @sym_table *t@ = symbol table to initialise
+ * Arguments:  @sym_table *t@ = symbol table to initialize
  *
  * Returns:    ---
  *
- * Use:                Initialises the given symbol table.  Raises @EXC_NOMEM@ if
+ * Use:                Initializes the given symbol table.  Raises @EXC_NOMEM@ if
  *             there isn't enough memory.
  */
 
@@ -217,7 +222,7 @@ void *sym_find(sym_table *t, const char *n, long l, size_t sz, unsigned *f)
   if (f) *f = 0;                       /* Failed to find the block */
   if (!sz) return (0);                 /* Return zero if not creating */
 
-  /* --- Create a new symbol block and initialise it --- */
+  /* --- Create a new symbol block and initialize it --- */
 
   {
     TRACK_CTX("new symbol creation");
@@ -247,7 +252,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 +269,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;
@@ -435,7 +442,7 @@ int main(void)
   sym_table tbl;
   int entries;
 
-  /* --- Initialise for reading the file --- */
+  /* --- Initialize for reading the file --- */
 
   sz = BUFSIZ;
   buff = xmalloc(sz + 1);