initialize all DBT structs with 0

This commit is contained in:
eknauel 2004-09-20 14:39:57 +00:00
parent 68a340c591
commit fb5c2a89bc
1 changed files with 14 additions and 11 deletions

25
c/bdb.c
View File

@ -407,12 +407,8 @@ s48_value scsh_enter_DBT_as_bytevector(DBT* dt)
void scsh_extract_bytevector_as_DBT(s48_value bytevector, DBT* dt)
{
S48_DECLARE_GC_PROTECT(1);
S48_GC_PROTECT_1(bytevector);
dt->data = s48_extract_byte_vector(bytevector);
dt->size = S48_BYTE_VECTOR_LENGTH(bytevector);
S48_GC_UNPROTECT();
}
/* DBT operations */
@ -421,7 +417,7 @@ void scsh_extract_bytevector_as_DBT(s48_value bytevector, DBT* dt)
s48_value scsh_bdb_put(s48_value db, s48_value skey, s48_value sdata,
s48_value stxnid, s48_value sflags)
{
int res;
int res = 0;
DB *dbp;
DB_TXN *txnid;
DBT key, data;
@ -433,12 +429,14 @@ s48_value scsh_bdb_put(s48_value db, s48_value skey, s48_value sdata,
dbp = scsh_extract_db(db);
txnid = EXTRACT_OPTIONAL_TXNID(stxnid);
flags = s48_extract_integer(sflags);
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
scsh_extract_bytevector_as_DBT(skey, &key);
scsh_extract_bytevector_as_DBT(sdata, &data);
S48_GC_UNPROTECT();
res = dbp->put(dbp, txnid, &key, &data, flags);
S48_GC_UNPROTECT();
CHECK_BDB_RESULT_CODE(res);
return S48_TRUE;
}
@ -454,14 +452,17 @@ s48_value scsh_bdb_get(s48_value handle, s48_value skey,
DBT key, data;
S48_DECLARE_GC_PROTECT(4);
S48_GC_PROTECT_4(handle, skey, stxnid, sflags);
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
dbp = scsh_extract_db(handle);
flags = s48_extract_integer(sflags);
txnid = EXTRACT_OPTIONAL_TXNID(stxnid);
scsh_extract_bytevector_as_DBT(skey, &key);
S48_GC_UNPROTECT();
res = dbp->get(dbp, txnid, &key, &data, flags);
switch (res) {
@ -491,6 +492,7 @@ s48_value scsh_bdb_del(s48_value handle, s48_value skey,
dbp = scsh_extract_db(handle);
flags = s48_extract_integer(sflags);
txnid = EXTRACT_OPTIONAL_TXNID(stxnid);
memset(&key, 0, sizeof(DBT));
scsh_extract_bytevector_as_DBT(skey, &key);
S48_GC_UNPROTECT();
@ -544,10 +546,11 @@ s48_value scsh_bdb_cursor_cget(s48_value dbc, s48_value sflags)
DBC* dbcp;
u_int32_t flags;
DBT *key, *data;
S48_DECLARE_GC_PROTECT(2);
S48_GC_PROTECT_2(dbc, sflags);
memset(&key, 0, sizeof(DBT));
memset(&data, 0, sizeof(DBT));
dbcp = scsh_extract_cursor(dbc);
flags = s48_extract_integer(sflags);
S48_GC_UNPROTECT();