Coverity fixes
[claws.git] / src / mimeview.c
index caec7d99b44108da3a622d2b64b6f5aa7743de8e..8b20d5cd000b60d45ca2e86e08abba4dc0db0096 100644 (file)
@@ -1696,21 +1696,22 @@ static void mimeview_drag_data_get(GtkWidget        *widget,
                FILE *fp;
 
                fp = g_fopen(partinfo->data.filename, "rb");
-               fseek(fp, partinfo->offset, SEEK_SET);
-               headers = procheader_get_header_array_asis(fp);
-               if (headers) {
-                       gint i;
-                       for (i = 0; i < headers->len; i++) {
-                               Header *header = g_ptr_array_index(headers, i);
-                               if (procheader_headername_equal(header->name, "Subject")) {
-                                       unfold_line(header->body);
-                                       name = g_strconcat(header->body, ".txt", NULL);
-                                       subst_for_filename(name);
+               if (fp != NULL && fseek(fp, partinfo->offset, SEEK_SET) == 0) {
+                       headers = procheader_get_header_array_asis(fp);
+                       if (headers) {
+                               gint i;
+                               for (i = 0; i < headers->len; i++) {
+                                       Header *header = g_ptr_array_index(headers, i);
+                                       if (procheader_headername_equal(header->name, "Subject")) {
+                                               unfold_line(header->body);
+                                               name = g_strconcat(header->body, ".txt", NULL);
+                                               subst_for_filename(name);
+                                       }
                                }
+                               procheader_header_array_destroy(headers);
                        }
-                       procheader_header_array_destroy(headers);
+                       fclose(fp);
                }
-               fclose(fp);
                if (name)
                        filename = g_path_get_basename(name);
                g_free(name);
@@ -2535,19 +2536,22 @@ static void icon_list_append_icon (MimeView *mimeview, MimeInfo *mimeinfo)
                          to_human_readable((goffset)mimeinfo->length), NULL);
        g_free(content_type);
        if (desc && *desc) {
-               gchar *tmp = NULL;
+               gchar *tmp = NULL, *escaped = NULL;
                if (!g_utf8_validate(desc, -1, NULL)) {
                        tmp = conv_filename_to_utf8(desc);
                } else {
                        tmp = g_strdup(desc);
                }
+               escaped = g_markup_escape_text(tmp,-1);
+               
                tiptmp = g_strconcat(tip, "\n<b>",
                                prefs_common.attach_desc && mimeinfo->description ?
                                _("Description:") : _("Filename:"),
-                               " </b>", g_markup_escape_text(tmp,-1), NULL);
+                               " </b>", escaped, NULL);
                g_free(tip);
                tip = tiptmp;
                g_free(tmp);
+               g_free(escaped);
        }
        if (sigshort && *sigshort) {
                tiptmp = g_strjoin("\n", tip, g_markup_escape_text(sigshort, -1), NULL);
@@ -2644,32 +2648,31 @@ static void icon_list_create(MimeView *mimeview, MimeInfo *mimeinfo)
                gtk_widget_set_size_request(mimeview->icon_mainbox, 
                                            size.width, -1);
        }
+       if (mimeview->opened)
+               icon_list_toggle_by_mime_info(mimeview,
+                       mimeview_get_node_part(mimeview, mimeview->opened));
 }
 
 static void icon_list_toggle_by_mime_info (MimeView    *mimeview,
                                           MimeInfo     *mimeinfo)
 {
-       GList *child;
+       GList *children, *child;
        
-       child = gtk_container_get_children(GTK_CONTAINER(mimeview->icon_vbox));
-       for (; child != NULL; child = g_list_next(child)) {
+       children = gtk_container_get_children(GTK_CONTAINER(mimeview->icon_vbox));
+       for (child = children; child != NULL; child = g_list_next(child)) {
+               gboolean *highlight = NULL;
+               GtkWidget *icon = gtk_bin_get_child(GTK_BIN(child->data));
+
                if (!GTK_IS_EVENT_BOX(child->data))
                        continue;
-               if(g_object_get_data(G_OBJECT(child->data),
-                                     "partinfo") == (gpointer)mimeinfo) {
-                       gboolean *highlight = NULL;
-                       GtkWidget *icon = gtk_bin_get_child(GTK_BIN(child->data));
-                       highlight = g_object_get_data(G_OBJECT(icon), "highlight");
-                       *highlight = TRUE;
-                       gtk_widget_queue_draw(icon);
-               } else {
-                       gint *highlight = NULL;
-                       GtkWidget *icon = gtk_bin_get_child(GTK_BIN(child->data));
-                       highlight = g_object_get_data(G_OBJECT(icon), "highlight");
-                       *highlight = FALSE;
-                       gtk_widget_queue_draw(icon);
-               }                        
+
+               highlight = g_object_get_data(G_OBJECT(icon), "highlight");
+               *highlight = (g_object_get_data(G_OBJECT(child->data),
+                                     "partinfo") == (gpointer)mimeinfo);
+
+               gtk_widget_queue_draw(icon);
        }
+       g_list_free(children);
 }
 
 static void ctree_size_allocate_cb(GtkWidget *widget, GtkAllocation *allocation,
@@ -2719,7 +2722,8 @@ static gint mime_toggle_button_cb(GtkWidget *button, GdkEventButton *event,
        return TRUE;
 }
 
-void mimeview_update (MimeView *mimeview) {
+void mimeview_update (MimeView *mimeview)
+{
        if (mimeview && mimeview->mimeinfo) {
                icon_list_clear(mimeview);
                icon_list_create(mimeview, mimeview->mimeinfo);