]> git.cworth.org Git - sup/blobdiff - lib/sup/modes/edit-message-mode.rb
fix exception when editting an empty MULTI_HEADER
[sup] / lib / sup / modes / edit-message-mode.rb
index 6a7f273b4ec18d59f14919ec10c8c9e6fb9262e6..b2b60eb043290201b7aecbca6fa45cb4628a5012 100644 (file)
@@ -148,9 +148,13 @@ EOS
   def attach_file
     fn = BufferManager.ask_for_filename :attachment, "File name (enter for browser): "
     return unless fn
-    @attachments << RMail::Message.make_file_attachment(fn)
-    @attachment_names << fn
-    update
+    begin
+      @attachments << RMail::Message.make_file_attachment(fn)
+      @attachment_names << fn
+      update
+    rescue SystemCallError => e
+      BufferManager.flash "Can't read #{fn}: #{e.message}"
+    end
   end
 
   def delete_attachment
@@ -317,7 +321,7 @@ protected
     ## do whatever crypto transformation is necessary
     if @crypto_selector && @crypto_selector.val != :none
       from_email = PersonManager.person_for(@header["From"]).email
-      to_email = (@header["To"] + @header["Cc"] + @header["Bcc"]).map { |p| PersonManager.person_for(p).email }
+      to_email = [@header["To"], @header["Cc"], @header["Bcc"]].flatten.compact.map { |p| PersonManager.person_for(p).email }
 
       m = CryptoManager.send @crypto_selector.val, from_email, to_email, m
     end
@@ -379,6 +383,7 @@ protected
       default =
         case field
         when *MULTI_HEADERS
+         @header[field] ||= []
           @header[field].join(", ")
         else
           @header[field]