]> git.sur5r.net Git - openldap/commitdiff
Fix up some locking
authorKurt Zeilenga <kurt@openldap.org>
Thu, 7 Jun 2001 16:24:46 +0000 (16:24 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Thu, 7 Jun 2001 16:24:46 +0000 (16:24 +0000)
libraries/libldbm/ldbm.c

index faa076ba18b9cf1c8a8ea554610ca7dbbed232c9..baaa1c7922947898822e3c3d75ecf18b641fbeb5 100644 (file)
@@ -275,6 +275,8 @@ ldbm_open( char *name, int rw, int mode, int dbcachesize )
        err = db_create( &ret, ldbm_Env, 0 );
        if ( err != 0 ) {
                (void)ret->close(ret, 0);
+               LDBM_UNLOCK;
+
                return NULL;
        }
 
@@ -283,12 +285,16 @@ ldbm_open( char *name, int rw, int mode, int dbcachesize )
 
        err = ret->open( ret, name, NULL, DB_TYPE, rw, mode);
 
-       LDBM_UNLOCK;
-
        if ( err != 0 ) {
+               int tmp = errno;
                (void)ret->close(ret, 0);
+               errno = tmp;
+
+               LDBM_UNLOCK;
                return NULL;
        }
+
+       LDBM_UNLOCK;
  
 #elif DB_VERSION_MAJOR >= 2
        DB_INFO dbinfo;
@@ -336,7 +342,7 @@ ldbm_open( char *name, int rw, int mode, int dbcachesize )
        LDBM_UNLOCK;
 #endif
 
-       return( ret );
+       return ret;
 }
 
 void