mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-05 04:39:07 -04:00
refactor: revert 'use ffi Arena for resource management'
This commit is contained in:
parent
6a097c1841
commit
a78c38d8e3
9 changed files with 588 additions and 620 deletions
|
@ -16,36 +16,38 @@ Pointer<git_signature> create(
|
|||
int time,
|
||||
int offset,
|
||||
) {
|
||||
return using((Arena arena) {
|
||||
final out = arena<Pointer<git_signature>>();
|
||||
final nameC = name.toNativeUtf8(allocator: arena).cast<Int8>();
|
||||
final emailC = email.toNativeUtf8(allocator: arena).cast<Int8>();
|
||||
final error = libgit2.git_signature_new(out, nameC, emailC, time, offset);
|
||||
final out = calloc<Pointer<git_signature>>();
|
||||
final nameC = name.toNativeUtf8().cast<Int8>();
|
||||
final emailC = email.toNativeUtf8().cast<Int8>();
|
||||
final error = libgit2.git_signature_new(out, nameC, emailC, time, offset);
|
||||
|
||||
if (error < 0) {
|
||||
throw LibGit2Error(libgit2.git_error_last());
|
||||
} else {
|
||||
return out.value;
|
||||
}
|
||||
});
|
||||
calloc.free(nameC);
|
||||
calloc.free(emailC);
|
||||
|
||||
if (error < 0) {
|
||||
throw LibGit2Error(libgit2.git_error_last());
|
||||
} else {
|
||||
return out.value;
|
||||
}
|
||||
}
|
||||
|
||||
/// Create a new action signature with a timestamp of 'now'.
|
||||
///
|
||||
/// Throws a [LibGit2Error] if error occured.
|
||||
Pointer<git_signature> now(String name, String email) {
|
||||
return using((Arena arena) {
|
||||
final out = arena<Pointer<git_signature>>();
|
||||
final nameC = name.toNativeUtf8(allocator: arena).cast<Int8>();
|
||||
final emailC = email.toNativeUtf8(allocator: arena).cast<Int8>();
|
||||
final error = libgit2.git_signature_now(out, nameC, emailC);
|
||||
final out = calloc<Pointer<git_signature>>();
|
||||
final nameC = name.toNativeUtf8().cast<Int8>();
|
||||
final emailC = email.toNativeUtf8().cast<Int8>();
|
||||
final error = libgit2.git_signature_now(out, nameC, emailC);
|
||||
|
||||
if (error < 0) {
|
||||
throw LibGit2Error(libgit2.git_error_last());
|
||||
} else {
|
||||
return out.value;
|
||||
}
|
||||
});
|
||||
calloc.free(nameC);
|
||||
calloc.free(emailC);
|
||||
|
||||
if (error < 0) {
|
||||
throw LibGit2Error(libgit2.git_error_last());
|
||||
} else {
|
||||
return out.value;
|
||||
}
|
||||
}
|
||||
|
||||
/// Free an existing signature.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue