]> mj.ucw.cz Git - libucw.git/blobdiff - lib/db-emul.c
Save cache misses by keeping a copy of the hash value next to the pointer.
[libucw.git] / lib / db-emul.c
index a8d88743820800f87b95737342ef40bc638f0284..62540de84592e70b70245ac13891fd77bdbefbf3 100644 (file)
@@ -1,7 +1,10 @@
 /*
- *     Sherlock Library -- SDBM emulator at top of GDBM
+ *     UCW Library -- SDBM emulator at top of GDBM
  *
  *     (c) 1999 Martin Mares <mj@ucw.cz>
+ *
+ *     This software may be freely distributed and used according to the terms
+ *     of the GNU Lesser General Public License.
  */
 
 #include "lib/lib.h"
@@ -39,7 +42,7 @@ sdbm_close(struct sdbm *d)
 {
   sdbm_rewind(d);
   gdbm_close(d->db);
-  free(d);
+  xfree(d);
 }
 
 static int
@@ -110,7 +113,7 @@ sdbm_fetch(struct sdbm *d, byte *key, uns keylen, byte *val, uns *vallen)
   if (!V.dptr)
     return 0;
   rc = sdbm_put_user(V.dptr, V.dsize, val, vallen);
-  free(V.dptr);
+  xfree(V.dptr);
   return rc ? SDBM_ERROR_TOO_LARGE : 1;
 }
 
@@ -119,7 +122,7 @@ sdbm_rewind(struct sdbm *d)
 {
   if (d->prevkey.dptr)
     {
-      free(d->prevkey.dptr);
+      xfree(d->prevkey.dptr);
       d->prevkey.dptr = NULL;
     }
 }
@@ -132,7 +135,7 @@ sdbm_get_next(struct sdbm *d, byte *key, uns *keylen, byte *val, uns *vallen)
   if (d->prevkey.dptr)
     {
       K = gdbm_nextkey(d->db, d->prevkey);
-      free(d->prevkey.dptr);
+      xfree(d->prevkey.dptr);
     }
   else
     K = gdbm_firstkey(d->db);