From 29c3997c288cb263a746574b9ab5cfbffac81fbf Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 22 Apr 2024 17:24:38 +0200 Subject: [PATCH] Fix: Crash reading some particular old blend files --- source/blender/blenkernel/intern/screen.cc | 5 +++++ source/blender/blenloader/intern/readfile.cc | 3 +++ 2 files changed, 8 insertions(+) diff --git a/source/blender/blenkernel/intern/screen.cc b/source/blender/blenkernel/intern/screen.cc index 5c7a63505b1..e657914188c 100644 --- a/source/blender/blenkernel/intern/screen.cc +++ b/source/blender/blenkernel/intern/screen.cc @@ -1188,6 +1188,11 @@ static void direct_link_region(BlendDataReader *reader, ARegion *region, int spa if (region->regiontype == RGN_TYPE_WINDOW) { BLO_read_data_address(reader, ®ion->regiondata); + if (region->regiondata == nullptr) { + /* To avoid crashing on some old files. */ + region->regiondata = MEM_cnew("region view3d"); + } + RegionView3D *rv3d = static_cast(region->regiondata); BLO_read_data_address(reader, &rv3d->localvd); diff --git a/source/blender/blenloader/intern/readfile.cc b/source/blender/blenloader/intern/readfile.cc index 688fea8210d..6fb079e665c 100644 --- a/source/blender/blenloader/intern/readfile.cc +++ b/source/blender/blenloader/intern/readfile.cc @@ -3090,6 +3090,9 @@ static void link_global(FileData *fd, BlendFileData *bfd) bfd->curscene = bfd->curscreen->scene; } } + if (bfd->curscene == nullptr) { + bfd->curscene = static_cast(bfd->main->scenes.first); + } } /** \} */