always create a cursor with db3. From Derrick J Brashear
<shadow@dementia.org> git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@8828 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -41,8 +41,9 @@ DB_close(krb5_context context, HDB *db)
|
|||||||
{
|
{
|
||||||
DB *d = (DB*)db->db;
|
DB *d = (DB*)db->db;
|
||||||
DBC *dbcp = (DBC*)db->dbc;
|
DBC *dbcp = (DBC*)db->dbc;
|
||||||
if (dbcp)
|
|
||||||
dbcp->c_close(dbcp);
|
dbcp->c_close(dbcp);
|
||||||
|
db->dbc = 0;
|
||||||
d->close(d, 0);
|
d->close(d, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -85,7 +86,7 @@ DB_seq(krb5_context context, HDB *db,
|
|||||||
{
|
{
|
||||||
DB *d = (DB*)db->db;
|
DB *d = (DB*)db->db;
|
||||||
DBT key, value;
|
DBT key, value;
|
||||||
DBC *dbcp;
|
DBC *dbcp = db->dbc;
|
||||||
krb5_data key_data, data;
|
krb5_data key_data, data;
|
||||||
int code;
|
int code;
|
||||||
|
|
||||||
@@ -93,11 +94,6 @@ DB_seq(krb5_context context, HDB *db,
|
|||||||
memset(&value, 0, sizeof(DBT));
|
memset(&value, 0, sizeof(DBT));
|
||||||
if (db->lock(context, db, HDB_RLOCK))
|
if (db->lock(context, db, HDB_RLOCK))
|
||||||
return HDB_ERR_DB_INUSE;
|
return HDB_ERR_DB_INUSE;
|
||||||
if (!db->dbc)
|
|
||||||
code = d->cursor(d, NULL, (DBC **)&db->dbc, 0);
|
|
||||||
if (code)
|
|
||||||
return code;
|
|
||||||
dbcp=db->dbc;
|
|
||||||
code = dbcp->c_get(dbcp, &key, &value, flag);
|
code = dbcp->c_get(dbcp, &key, &value, flag);
|
||||||
db->unlock(context, db); /* XXX check value */
|
db->unlock(context, db); /* XXX check value */
|
||||||
if (code == DB_NOTFOUND)
|
if (code == DB_NOTFOUND)
|
||||||
@@ -261,6 +257,11 @@ DB_open(krb5_context context, HDB *db, int flags, mode_t mode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(fn);
|
free(fn);
|
||||||
|
|
||||||
|
ret = d->cursor(d, NULL, (DBC **)&db->dbc, 0);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
if((flags & O_ACCMODE) == O_RDONLY)
|
if((flags & O_ACCMODE) == O_RDONLY)
|
||||||
ret = hdb_check_db_format(context, db);
|
ret = hdb_check_db_format(context, db);
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user