Allocate tdb name up front in case log functions want to use it.
authorMartin Pool <mbp@samba.org>
Mon, 10 Dec 2001 06:09:42 +0000 (06:09 +0000)
committerMartin Pool <mbp@samba.org>
Mon, 10 Dec 2001 06:09:42 +0000 (06:09 +0000)
(This used to be commit a228c7efcc06b901ca51a6da77f8a52b77912f55)

source3/tdb/tdb.c

index de376d29b20c1e6e2837cf5b19d409e2400b0c9f..1ca297459118820c86f0aa623fa845f96e7fb7dc 100644 (file)
@@ -1422,6 +1422,11 @@ TDB_CONTEXT *tdb_open_ex(char *name, int hash_size, int tdb_flags,
        tdb->flags = tdb_flags;
        tdb->open_flags = open_flags;
        tdb->log_fn = log_fn;
+       
+       if (!(tdb->name = (char *)strdup(name))) {
+               errno = ENOMEM;
+               goto fail;
+       }
 
        if ((open_flags & O_ACCMODE) == O_WRONLY) {
                TDB_LOG((tdb, 0, "tdb_open_ex: can't open tdb %s write-only\n",
@@ -1497,12 +1502,6 @@ TDB_CONTEXT *tdb_open_ex(char *name, int hash_size, int tdb_flags,
                goto fail;
        }
 
-       /* map the database and fill in the return structure */
-       tdb->name = (char *)strdup(name);
-       if (!tdb->name) {
-               errno = ENOMEM;
-               goto fail;
-       }
        tdb->map_size = st.st_size;
        tdb->device = st.st_dev;
        tdb->inode = st.st_ino;