[Bf-blender-cvs] [eca8bae6718] master: Fix T51054: NULL-dereferences in crash-handler callback

Julian Eisel noreply at git.blender.org
Wed Jan 15 18:13:00 CET 2020


Commit: eca8bae6718d2cba788713bfb677f92f2fa3ca4e
Author: Julian Eisel
Date:   Wed Jan 15 18:08:34 2020 +0100
Branches: master
https://developer.blender.org/rBeca8bae6718d2cba788713bfb677f92f2fa3ca4e

Fix T51054: NULL-dereferences in crash-handler callback

===================================================================

M	source/creator/creator_signals.c

===================================================================

diff --git a/source/creator/creator_signals.c b/source/creator/creator_signals.c
index e8c6e9251bc..446f8f51875 100644
--- a/source/creator/creator_signals.c
+++ b/source/creator/creator_signals.c
@@ -102,15 +102,18 @@ static void sig_handle_crash_backtrace(FILE *fp)
 
 static void sig_handle_crash(int signum)
 {
-  wmWindowManager *wm = G_MAIN->wm.first;
+  /* Might be called after WM/Main exit, so needs to be careful about NULL-checking before
+   * dereferencing. */
+
+  wmWindowManager *wm = G_MAIN ? G_MAIN->wm.first : NULL;
 
 #  ifdef USE_WRITE_CRASH_BLEND
-  if (wm->undo_stack) {
+  if (wm && wm->undo_stack) {
     struct MemFile *memfile = BKE_undosys_stack_memfile_get_active(wm->undo_stack);
     if (memfile) {
       char fname[FILE_MAX];
 
-      if (!G_MAIN->name[0]) {
+      if (!(G_MAIN && G_MAIN->name[0])) {
         BLI_make_file_string("/", fname, BKE_tempdir_base(), "crash.blend");
       }
       else {
@@ -131,7 +134,7 @@ static void sig_handle_crash(int signum)
 
   char fname[FILE_MAX];
 
-  if (!G_MAIN->name[0]) {
+  if (!(G_MAIN && G_MAIN->name[0])) {
     BLI_join_dirfile(fname, sizeof(fname), BKE_tempdir_base(), "blender.crash.txt");
   }
   else {



More information about the Bf-blender-cvs mailing list