Fix leak on txn abort

This commit is contained in:
2024-11-14 21:41:38 +09:00
parent 7775f8000b
commit 5ae9afdfa2
2 changed files with 9 additions and 1 deletions

View File

@@ -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 {

View File

@@ -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;
}