[geary/mjog/misc-criticals: 2/9] Geary.Imap.FolderSession: Fix critical with empty preview buffers
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/mjog/misc-criticals: 2/9] Geary.Imap.FolderSession: Fix critical with empty preview buffers
- Date: Sat, 27 Jun 2020 02:32:25 +0000 (UTC)
commit b7076188a0e56b36b598e63793afc5f1ca84af42
Author: Michael Gratton <mike vee net>
Date: Thu Jun 25 20:39:13 2020 +1000
Geary.Imap.FolderSession: Fix critical with empty preview buffers
Check preview header and body buffers are not empty before attempting
to extract a preview from them.
Fixes #865 (or at least replaces the crit with a warning)
src/engine/imap/api/imap-folder-session.vala | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
---
diff --git a/src/engine/imap/api/imap-folder-session.vala b/src/engine/imap/api/imap-folder-session.vala
index b7c42a862..6494d40d3 100644
--- a/src/engine/imap/api/imap-folder-session.vala
+++ b/src/engine/imap/api/imap-folder-session.vala
@@ -993,13 +993,20 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject {
// if preview was requested, get it now ... both identifiers
// must be supplied if one is
if (preview_specifier != null || preview_charset_specifier != null) {
- assert(preview_specifier != null && preview_charset_specifier != null);
+ Memory.Buffer? preview_headers = fetched_data.body_data_map.get(
+ preview_charset_specifier
+ );
+ Memory.Buffer? preview_body = fetched_data.body_data_map.get(
+ preview_specifier
+ );
- if (fetched_data.body_data_map.has_key(preview_specifier)
- && fetched_data.body_data_map.has_key(preview_charset_specifier)) {
- email.set_message_preview(new RFC822.PreviewText.with_header(
- fetched_data.body_data_map.get(preview_charset_specifier),
- fetched_data.body_data_map.get(preview_specifier)));
+ if (preview_headers != null && preview_headers.size > 0 &&
+ preview_body != null && preview_body.size > 0) {
+ email.set_message_preview(
+ new RFC822.PreviewText.with_header(
+ preview_headers, preview_body
+ )
+ );
} else {
warning("No preview specifiers \"%s\" and \"%s\" found",
preview_specifier.to_string(), preview_charset_specifier.to_string());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]