refactor!: use Finalizer to automatically free allocated memory for objects (#48)

BREAKING CHANGE: signature change for remote and repository callbacks during repository clone operation.
This commit is contained in:
Aleksey Kulikov 2022-04-28 11:04:48 +03:00 committed by GitHub
parent 94c40f9a94
commit a3213a88a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
103 changed files with 2278 additions and 2595 deletions

View file

@ -19,27 +19,25 @@ Object? getAttribute({
final nameC = name.toNativeUtf8().cast<Int8>();
libgit2.git_attr_get(out, repoPointer, flags, pathC, nameC);
final result = out.value;
calloc.free(out);
calloc.free(pathC);
calloc.free(nameC);
final attributeValue = libgit2.git_attr_value(out.value);
final attributeValue = libgit2.git_attr_value(result);
if (attributeValue == git_attr_value_t.GIT_ATTR_VALUE_UNSPECIFIED) {
calloc.free(out);
return null;
}
if (attributeValue == git_attr_value_t.GIT_ATTR_VALUE_TRUE) {
calloc.free(out);
return true;
}
if (attributeValue == git_attr_value_t.GIT_ATTR_VALUE_FALSE) {
calloc.free(out);
return false;
}
if (attributeValue == git_attr_value_t.GIT_ATTR_VALUE_STRING) {
final result = out.value.cast<Utf8>().toDartString();
calloc.free(out);
return result;
return result.cast<Utf8>().toDartString();
}
return null;
}