]> granicus.if.org Git - mutt/commitdiff
Initialize mutt windows even in batch mode. (closes #3853)
authorKevin McCarthy <kevin@8t8.us>
Tue, 12 Jul 2016 01:36:21 +0000 (18:36 -0700)
committerKevin McCarthy <kevin@8t8.us>
Tue, 12 Jul 2016 01:36:21 +0000 (18:36 -0700)
mutt_select_fcc() calls mutt_addr_hook() -> mutt_make_string() which
refers to MuttIndexWindow->cols when calling mutt_FormatString().  In
batch mode, MuttIndexWindow hasn't been initialized, leading to a
segfault.

This might be the only overlap, but it seems wiser to just initialize
the mutt windows in case there are other references (now or in the
future) when processing format strings in batch mode.

curs_lib.c
main.c

index ef01f0d6f32646c766b309db9526132504ccff43..ed0d10c34127b79f920c921c388d1a0a4f3f58a4 100644 (file)
@@ -496,8 +496,6 @@ void mutt_init_windows ()
 #ifdef USE_SIDEBAR
   MuttSidebarWindow = safe_calloc (sizeof (mutt_window_t), 1);
 #endif
-
-  mutt_reflow_windows ();
 }
 
 void mutt_free_windows ()
diff --git a/main.c b/main.c
index ffbb350d7b4d7cd4ae230502c8cc78e8e7f1c9ff..d696cd581bec5800aa7c51fcef5d30de4a4f1331 100644 (file)
--- a/main.c
+++ b/main.c
@@ -556,7 +556,7 @@ static void start_curses (void)
   meta (stdscr, TRUE);
 #endif
 init_extended_keys();
-  mutt_init_windows ();
+  mutt_reflow_windows ();
 }
 
 #define MUTT_IGNORE  (1<<0)    /* -z */
@@ -780,6 +780,10 @@ int main (int argc, char **argv)
     sendflags = SENDBATCH;
   }
 
+  /* Always create the mutt_windows because batch mode has some shared code
+   * paths that end up referencing them. */
+  mutt_init_windows ();
+
   /* This must come before mutt_init() because curses needs to be started
      before calling the init_pair() function to set the color scheme.  */
   if (!option (OPTNOCURSES))
@@ -1158,11 +1162,9 @@ int main (int argc, char **argv)
       FREE (&tempfile);
     }
 
+    mutt_free_windows ();
     if (!option (OPTNOCURSES))
-    {
-      mutt_free_windows ();
       mutt_endwin (NULL);
-    }
 
     if (rv)
       exit(1);