chiark / gitweb /
buf: Fix two embarassing bugs found while writing Lisp bindings.
[mLib] / atom.c
diff --git a/atom.c b/atom.c
index dd02f5457b656919995052b037cf6f5de79b5e65..ce8295c131c2fdb3f92fdc32c8b99f49f411ccf4 100644 (file)
--- a/atom.c
+++ b/atom.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: atom.c,v 1.3 2001/01/25 21:13:15 mdw Exp $
+ * $Id$
  *
  * Atom management
  *
  * MA 02111-1307, USA.
  */
 
-/*----- Revision history --------------------------------------------------* 
- *
- * $Log: atom.c,v $
- * Revision 1.3  2001/01/25 21:13:15  mdw
- * New function allowing an atom's length to be specified at intern time.
- *
- * Revision 1.2  2001/01/21 19:04:51  mdw
- * Include `crc32.h' for @CRC32@ macro.
- *
- * Revision 1.1  2001/01/20 11:50:16  mdw
- * Implementation of atom tables (for example, as found in X11).
- *
- */
-
 /*----- Header files ------------------------------------------------------*/
 
 #include <stdio.h>
@@ -48,9 +34,9 @@
 
 #include "alloc.h"
 #include "atom.h"
-#include "crc32.h"
 #include "hash.h"
 #include "sym.h"
+#include "unihash.h"
 
 /*----- Static variables --------------------------------------------------*/
 
@@ -167,8 +153,8 @@ atom *atom_gensym(atom_table *t)
   a = x_alloc(t->t.t.a, sizeof(atom) + sz);
   a->b.name = (char *)(a + 1);
   memcpy(a->b.name, buf, sz);
-  a->b.len = sz;
-  CRC32(a->b.b.hash, 0, buf, sz);
+  a->b.len = sz - 1;
+  a->b.b.hash = UNIHASH(&unihash_global, buf, sz);
   a->f = ATOMF_GENSYM;
   a->b.b.next = t->g;
   t->g = &a->b.b;