diff cdb.c @ 12:0e21568dec72

allocate a Cdb struct rather than using a single static one, note that cdb_free does _not_ call alloc_free, just releases the map, in fact alloc_free is not called anywhere!
author Henry S. Thompson <ht@inf.ed.ac.uk>
date Mon, 03 Feb 2025 17:31:23 +0000
parents 41b9b6a160d1
children 70f4df5a7283
line wrap: on
line diff
--- a/cdb.c	Fri Jan 31 17:28:35 2025 +0000
+++ b/cdb.c	Mon Feb 03 17:31:23 2025 +0000
@@ -7,17 +7,18 @@
 #include "error.h"
 #include "seek.h"
 #include "byte.h"
+#include "alloc.h"
 #include "cdb.h"
 
 
-static Cdb c;
+/*static Cdb c;*/
 
 Cdb* cdb_new(void)
 {
-  return &c;
+  return (Cdb *)(alloc(sizeof(Cdb)));
 }
 
-void cdb_free(Cdb *c)
+void cdb_clear(Cdb *c)
 {
   if (c->map) {
     munmap(c->map,c->size);
@@ -25,21 +26,21 @@
   }
 }
 
-uint32 cdb_len() {
-  return c.dlen;
-}
+/* uint32 cdb_len() { */
+/*   return c.dlen; */
+/* } */
 
-uint32 cdb_pos() {
-  return c.dpos;
-}
+/* uint32 cdb_pos() { */
+/*   return c.dpos; */
+/* } */
 
-char *cdb_mmap() {
-  return c.map;
-}
+/* char *cdb_mmap() { */
+/*   return c.map; */
+/* } */
 
-uint32 cdb_msize() {
-  return c.size;
-}
+/* uint32 cdb_msize() { */
+/*   return c.size; */
+/* } */
 
 void cdb_findstart(Cdb *c)
 {
@@ -51,7 +52,7 @@
   struct stat st;
   char *x;
 
-  cdb_free(c);
+  cdb_clear(c);
   cdb_findstart(c);
   c->fd = fd;