]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/open.c
tdb2: actually implement tdb_error().
[ccan] / ccan / tdb2 / open.c
index f2d23aed9cc2abe07cf1d1624f266c63ebd1797e..7bb50f1db5964ae13687f0c792fab5a8603e8481 100644 (file)
@@ -209,6 +209,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags,
        tdb->transaction = NULL;
        tdb->stats = NULL;
        tdb->access = NULL;
+       tdb->last_error = TDB_SUCCESS;
        tdb->file = NULL;
        tdb_hash_init(tdb);
        tdb_io_init(tdb);
@@ -453,9 +454,9 @@ fail_errno:
 #ifdef TDB_TRACE
        close(tdb->tracefd);
 #endif
-       free((char *)tdb->name);
+       free(cast_const(char *, tdb->name));
        if (tdb->file) {
-               tdb_unlock_all(tdb);
+               tdb_lock_cleanup(tdb);
                if (--tdb->file->refcnt == 0) {
                        assert(tdb->file->num_lockrecs == 0);
                        if (tdb->file->map_ptr) {
@@ -494,11 +495,11 @@ int tdb_close(struct tdb_context *tdb)
                else
                        tdb_munmap(tdb->file);
        }
-       free((char *)tdb->name);
+       free(cast_const(char *, tdb->name));
        if (tdb->file) {
                struct tdb_file **i;
 
-               tdb_unlock_all(tdb);
+               tdb_lock_cleanup(tdb);
                if (--tdb->file->refcnt == 0) {
                        ret = close(tdb->file->fd);