fix memory leaks
Oops! They were pretty slow, but still adds up. This might fix the bug that was stopping Nexus from working on GraphineOS.
This commit is contained in:
parent
650c62fb99
commit
673c5bd894
2 changed files with 16 additions and 11 deletions
2
gomuks
2
gomuks
|
|
@ -1 +1 @@
|
||||||
Subproject commit 9e45ee426cc8be0bfada269f4abc4957c30e994e
|
Subproject commit c20070298d450cc02f465a503a5a52fea74af0d5
|
||||||
|
|
@ -60,10 +60,12 @@ class ClientController extends AsyncNotifier<int> {
|
||||||
"GOMUKS_CACHE_HOME": (await getApplicationCacheDirectory()).path,
|
"GOMUKS_CACHE_HOME": (await getApplicationCacheDirectory()).path,
|
||||||
};
|
};
|
||||||
for (final MapEntry(:key, :value) in env.entries) {
|
for (final MapEntry(:key, :value) in env.entries) {
|
||||||
GomuksSetEnv(
|
final keyPtr = key.toNativeUtf8().cast<Char>();
|
||||||
key.toNativeUtf8().cast<Char>(),
|
final valuePtr = value.toNativeUtf8().cast<Char>();
|
||||||
value.toNativeUtf8().cast<Char>(),
|
GomuksSetEnv(keyPtr, valuePtr);
|
||||||
);
|
calloc
|
||||||
|
..free(keyPtr)
|
||||||
|
..free(valuePtr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final handle = await Isolate.run(GomuksInit);
|
final handle = await Isolate.run(GomuksInit);
|
||||||
|
|
@ -193,14 +195,17 @@ class ClientController extends AsyncNotifier<int> {
|
||||||
return response == null ? null : .fromJson(response);
|
return response == null ? null : .fromJson(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<dynamic> _sendCommand(
|
dynamic _sendCommand(
|
||||||
String command, [
|
String command, [
|
||||||
Map<String, dynamic> data = const {},
|
Map<String, dynamic> data = const {},
|
||||||
]) => callGomuksMethod(
|
]) => callGomuksMethod(data, (handle, data) {
|
||||||
data,
|
final commandPointer = command.toNativeUtf8().cast<Char>();
|
||||||
(handle, data) async =>
|
try {
|
||||||
GomuksSubmitCommand(handle, command.toNativeUtf8().cast<Char>(), data),
|
return GomuksSubmitCommand(handle, commandPointer, data);
|
||||||
);
|
} finally {
|
||||||
|
calloc.free(commandPointer);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Future<void> redactEvent(RedactEventRequest report) =>
|
Future<void> redactEvent(RedactEventRequest report) =>
|
||||||
_sendCommand("redact_event", report.toJson());
|
_sendCommand("redact_event", report.toJson());
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue