]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - bin/mailshears
Dump our output buffer if a plugin crashes.
[mailshears.git] / bin / mailshears
index a218b2b486c321aa462380f727c80e9b6d35a97e..4d69f8fb67ab2df8a7615e4601b01e8228617a84 100755 (executable)
@@ -91,13 +91,19 @@ require 'stringio'
 output_buffer = StringIO.new()
 $stdout = output_buffer
 
 output_buffer = StringIO.new()
 $stdout = output_buffer
 
-plugin_module.run(cfg, *ARGV)
-
-# Restore stdout, and print the header plus whatever the plugins
-# produced if they produced anything. If they didn't, we avoid
-# printing the header.
-$stdout = STDOUT
-if output_buffer.size > 0 then
-  puts make_header(plugin_module.to_s())
-  puts output_buffer.string()
+begin
+  plugin_module.run(cfg, *ARGV)
+ensure
+  # Now restore stdout, and print the header plus whatever the plugins
+  # produced if they produced anything. If they didn't produce any
+  # output, then we avoid printing the header.
+  #
+  # This gets wrapped in an "ensure" block because otherwise, if
+  # plugin_module.run() crashes, the traceback will get stored in
+  # output_buffer and never get printed.
+  $stdout = STDOUT
+  if output_buffer.size > 0 then
+    puts make_header(plugin_module.to_s())
+    puts output_buffer.string()
+  end
 end
 end