diff --git a/mdbx/txn.go b/mdbx/txn.go index fa1787b..2a15005 100644 --- a/mdbx/txn.go +++ b/mdbx/txn.go @@ -57,10 +57,11 @@ const ( // // See MDBX_txn. type Txn struct { - env *Env - _txn *C.MDBX_txn - key *C.MDBX_val - val *C.MDBX_val + env *Env + _txn *C.MDBX_txn + key *C.MDBX_val + valNP C.MDBX_val + val *C.MDBX_val errLogf func(format string, v ...interface{}) @@ -593,15 +594,15 @@ func (txn *Txn) Get(dbi DBI, key []byte) ([]byte, error) { ret := C.mdbxgo_get( txn._txn, C.MDBX_dbi(dbi), k, C.size_t(len(key)), - txn.val, + &txn.valNP, ) err := operrno("mdbx_get", ret) if err != nil { - *txn.val = C.MDBX_val{} + txn.valNP.iov_base, txn.valNP.iov_len = nil, 0 return nil, err } - b := castToBytes(txn.val) - *txn.val = C.MDBX_val{} + b := castToBytes(&txn.valNP) + txn.valNP.iov_base, txn.valNP.iov_len = nil, 0 return b, nil }