sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 8b55c56e84b91739676c8012b13cda2c67db6dea
parent e7afdc2e3d20bbf7d23cb64c93a1dda9e5a21a8f
Author: William Morgan <wmorgan-sup@masanjin.net>
Date:   Tue, 11 Nov 2008 12:40:32 -0800

don't die when a draft discarded multiple times

This can happen when you open the same draft in multiple
buffers, and discard or send it multiple times.

Diffstat:
M lib/sup/draft.rb | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/sup/draft.rb b/lib/sup/draft.rb
@@ -32,7 +32,10 @@ class DraftManager
 
   def discard m
     docid, entry = Index.load_entry_for_id m.id
-    raise ArgumentError, "can't find entry for draft: #{m.id.inspect}" unless entry
+    unless entry
+      Redwood::log "can't find entry for draft: #{m.id.inspect}. You probably already discarded it."
+      return
+    end
     raise ArgumentError, "not a draft: source id #{entry[:source_id].inspect}, should be #{DraftManager.source_id.inspect} for #{m.id.inspect} / docno #{docid}" unless entry[:source_id].to_i == DraftManager.source_id
     Index.drop_entry docid
     File.delete @source.fn_for_offset(entry[:source_info])