Fix leak on txn abort
This commit is contained in:
@@ -134,12 +134,16 @@ public class KissDB: NSObject {
|
||||
|
||||
// TODO: impl. more
|
||||
public func insertData(from: @escaping ((Int)->DataItem?), count: Int) throws {
|
||||
throw KissDBError.general(-99, "unimplemented")
|
||||
|
||||
#if false
|
||||
let obj = InsertDataItemCallbackObject(insertCallback: from, maxCount: count)
|
||||
let userPtr = Unmanaged.passUnretained(obj).toOpaque()
|
||||
|
||||
guard kiss_db_insert_from(cPtr, false, InsertDataItemCallbackObject.insertCallback, userPtr, cError) else {
|
||||
throw KissDBError.general(cError.code, cError.message)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public func delete(key: String) throws {
|
||||
|
||||
@@ -77,6 +77,9 @@ void kiss_db_destroy(kiss_db_ptr ptr)
|
||||
if (ptr == NULL) {
|
||||
return;
|
||||
}
|
||||
if (ptr->txn) {
|
||||
mdb_txn_abort(ptr->txn);
|
||||
}
|
||||
mdb_dbi_close(ptr->env, ptr->dbi);
|
||||
mdb_env_close(ptr->env);
|
||||
free(ptr);
|
||||
@@ -102,6 +105,7 @@ kiss_bool kiss_db_commit(kiss_db_ptr ptr, kiss_db_error_t* error)
|
||||
{
|
||||
_kiss_db_update_count(ptr);
|
||||
mdb_txn_commit(ptr->txn);
|
||||
ptr->txn = NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -110,7 +114,7 @@ kiss_bool kiss_db_rollback(kiss_db_ptr ptr, kiss_db_error_t* error)
|
||||
{
|
||||
_kiss_db_update_count(ptr);
|
||||
mdb_txn_abort(ptr->txn);
|
||||
|
||||
ptr->txn = NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user