[geary/mjog/problem-report-memory-fixes: 3/3] Geary.ProblemReport: Copy log records when constructed
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/mjog/problem-report-memory-fixes: 3/3] Geary.ProblemReport: Copy log records when constructed
- Date: Sun, 1 Mar 2020 10:57:13 +0000 (UTC)
commit 11e35a998b782c9329c6683f7f35e0cf8d757195
Author: Michael Gratton <mike vee net>
Date: Sun Mar 1 21:39:31 2020 +1100
Geary.ProblemReport: Copy log records when constructed
Take a copy of extant log records when constrcuted so that newer records
can be dropped while the problem report still exists. This uses more
memory, but limits unbounded memory growth while any log reports
still exists.
src/engine/api/geary-problem-report.vala | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
---
diff --git a/src/engine/api/geary-problem-report.vala b/src/engine/api/geary-problem-report.vala
index 5f21b856..402d6310 100644
--- a/src/engine/api/geary-problem-report.vala
+++ b/src/engine/api/geary-problem-report.vala
@@ -26,8 +26,21 @@ public class Geary.ProblemReport : Object {
if (error != null) {
this.error = new ErrorContext(error);
}
- this.earliest_log = Logging.get_earliest_record();
- this.latest_log = Logging.get_latest_record();
+ Logging.Record next_original = Logging.get_earliest_record();
+ Logging.Record last_original = Logging.get_latest_record();
+ if (next_original != null) {
+ Logging.Record copy = this.earliest_log = new Logging.Record.copy(
+ next_original
+ );
+ next_original = next_original.next;
+ while (next_original != null &&
+ next_original != last_original) {
+ copy.next = new Logging.Record.copy(next_original);
+ copy = copy.next;
+ next_original = next_original.next;
+ }
+ this.latest_log = copy;
+ }
}
~ProblemReport() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]