From 8c9a1b1e3f46beca3a5efb800b7ffd52f0c29d9c Mon Sep 17 00:00:00 2001 From: djcb Date: Wed, 11 Apr 2012 18:25:49 +0300 Subject: [PATCH] * mu-msg-part.c, mu-msg-sexp.c: handle parts with unknown (or zero) size correctly, set :size to -1 so front-end can deal with it appropriately. --- src/mu-msg-part.c | 9 +++++---- src/mu-msg-part.h | 4 ++-- src/mu-msg-sexp.c | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/mu-msg-part.c b/src/mu-msg-part.c index d2ec1648..bfbb5c16 100644 --- a/src/mu-msg-part.c +++ b/src/mu-msg-part.c @@ -130,7 +130,8 @@ mu_msg_part_get_text (MuMsgPart *self, gboolean *err) } - +/* note: this will return -1 in case of error or if the size is + * unknown */ static ssize_t get_part_size (GMimePart *part) { @@ -143,11 +144,11 @@ get_part_size (GMimePart *part) stream = g_mime_data_wrapper_get_stream (wrapper); if (!stream) - return -1; + return -1; /* no stream -> size is 0 */ + else + return g_mime_stream_length (stream); /* NOTE: it seems we shouldn't unref stream/wrapper */ - - return g_mime_stream_length (stream); } diff --git a/src/mu-msg-part.h b/src/mu-msg-part.h index c0500e11..fa2c9d4d 100644 --- a/src/mu-msg-part.h +++ b/src/mu-msg-part.h @@ -49,8 +49,8 @@ struct _MuMsgPart { /* usually, "attachment" or "inline" */ char *disposition; - /* size of the part; or <= 0 if unknown */ - size_t size; + /* size of the part; or < 0 if unknown */ + ssize_t size; gpointer data; /* opaque data */ diff --git a/src/mu-msg-sexp.c b/src/mu-msg-sexp.c index d1a581c4..804fe0b3 100644 --- a/src/mu-msg-sexp.c +++ b/src/mu-msg-sexp.c @@ -222,11 +222,11 @@ each_part (MuMsg *msg, MuMsgPart *part, gchar **parts) name = g_strdup_printf ("\"part-%d\"", part->index); tmp = g_strdup_printf - ("%s(:index %d :name %s :mime-type \"%s/%s\" :size %u)", + ("%s(:index %d :name %s :mime-type \"%s/%s\" :size %i)", *parts ? *parts : "", part->index, name, part->type ? part->type : "application", part->subtype ? part->subtype : "octet-stream", - (unsigned)part->size); + (int)part->size); g_free (*parts); *parts = tmp;