--- BDB/BDB.xs 2007/12/22 07:33:48 1.28 +++ BDB/BDB.xs 2008/01/13 09:43:21 1.30 @@ -42,6 +42,12 @@ typedef DB DB_ornull; typedef DB_SEQUENCE DB_SEQUENCE_ornull; +typedef DB_ENV DB_ENV_ornuked; +typedef DB_TXN DB_TXN_ornuked; +typedef DBC DBC_ornuked; +typedef DB DB_ornuked; +typedef DB_SEQUENCE DB_SEQUENCE_ornuked; + typedef SV SV8; /* byte-sv, used for argument-checking */ typedef char *octetstring; @@ -924,10 +930,10 @@ #define REQ_SEND \ req_send (req) -#define SvPTR(var, arg, type, class, nullok) \ +#define SvPTR(var, arg, type, class, nullok) \ if (!SvOK (arg)) \ { \ - if (!nullok) \ + if (nullok != 1) \ croak (# var " must be a " # class " object, not undef"); \ \ (var) = 0; \ @@ -936,7 +942,7 @@ { \ IV tmp = SvIV ((SV*) SvRV (arg)); \ (var) = INT2PTR (type, tmp); \ - if (!var) \ + if (!var && nullok != 2) \ croak (# var " is not a valid " # class " object anymore"); \ } \ else \ @@ -1327,8 +1333,6 @@ { dREQ (REQ_ENV_OPEN); - env->set_thread_count (env, wanted + 2); - req->env = env; req->uint1 = open_flags | DB_THREAD; req->int1 = mode; @@ -1715,7 +1719,7 @@ MODULE = BDB PACKAGE = BDB::Env void -DESTROY (DB_ENV_ornull *env) +DESTROY (DB_ENV_ornuked *env) CODE: if (env) env->close (env, 0); @@ -1872,7 +1876,7 @@ MODULE = BDB PACKAGE = BDB::Db void -DESTROY (DB_ornull *db) +DESTROY (DB_ornuked *db) CODE: if (db) { @@ -1977,7 +1981,7 @@ MODULE = BDB PACKAGE = BDB::Txn void -DESTROY (DB_TXN_ornull *txn) +DESTROY (DB_TXN_ornuked *txn) CODE: if (txn) txn->abort (txn); @@ -1998,7 +2002,7 @@ MODULE = BDB PACKAGE = BDB::Cursor void -DESTROY (DBC_ornull *dbc) +DESTROY (DBC_ornuked *dbc) CODE: if (dbc) dbc->c_close (dbc); @@ -2014,7 +2018,7 @@ MODULE = BDB PACKAGE = BDB::Sequence void -DESTROY (DB_SEQUENCE_ornull *seq) +DESTROY (DB_SEQUENCE_ornuked *seq) CODE: if (seq) seq->close (seq, 0);