From fb5c2a89bc52f72f5fa3839651c48f189e4ae294 Mon Sep 17 00:00:00 2001 From: eknauel Date: Mon, 20 Sep 2004 14:39:57 +0000 Subject: [PATCH] initialize all DBT structs with 0 --- c/bdb.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/c/bdb.c b/c/bdb.c index 1d6d6cd..6462d3e 100644 --- a/c/bdb.c +++ b/c/bdb.c @@ -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();