diff --git a/source/blender/blenkernel/intern/main.c b/source/blender/blenkernel/intern/main.c index 46094ae2854..0fb52a531ac 100644 --- a/source/blender/blenkernel/intern/main.c +++ b/source/blender/blenkernel/intern/main.c @@ -40,6 +40,13 @@ Main *BKE_main_new() void BKE_main_free(Main *mainvar) { + /* In case this is called on a 'split-by-libraries' list of mains. + * + * Should not happen in typical usages, but can occur e.g. if a file reading is aborted. */ + if (mainvar->next) { + BKE_main_free(mainvar->next); + } + /* also call when reading a file, erase all, etc */ ListBase *lbarray[INDEX_ID_MAX]; int a;