From b548b3d57ea16fa46797cc80ceef54c2c42029d9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Oct 2019 13:19:04 +1100 Subject: [PATCH] Fix crash versioning file-selector tool region Loading the file from T69967 was crashing. --- source/blender/blenloader/intern/versioning_280.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 6ea30cc1309..5d73ffe26d5 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -585,13 +585,18 @@ static void do_versions_fix_annotations(bGPdata *gpd) } } -static void do_versions_remove_region(ListBase *regionbase, int regiontype) +static void do_versions_remove_region(ListBase *regionbase, ARegion *ar) +{ + BLI_freelinkN(regionbase, ar); +} + +static void do_versions_remove_regions_by_type(ListBase *regionbase, int regiontype) { ARegion *ar, *ar_next; for (ar = regionbase->first; ar; ar = ar_next) { ar_next = ar->next; if (ar->regiontype == regiontype) { - BLI_freelinkN(regionbase, ar); + do_versions_remove_region(regionbase, ar); } } } @@ -3340,7 +3345,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) ListBase *regionbase = (sl == sa->spacedata.first) ? &sa->regionbase : &sl->regionbase; /* Remove multiple footers that were added by mistake. */ - do_versions_remove_region(regionbase, RGN_TYPE_FOOTER); + do_versions_remove_regions_by_type(regionbase, RGN_TYPE_FOOTER); /* Add footer. */ ARegion *ar = do_versions_add_region(RGN_TYPE_FOOTER, "footer for text"); @@ -3895,7 +3900,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) /* We temporarily had two tools regions, get rid of the second one. */ if (ar_next && ar_next->regiontype == RGN_TYPE_TOOLS) { - do_versions_remove_region(regionbase, RGN_TYPE_TOOLS); + do_versions_remove_region(regionbase, ar_next); } BLI_remlink(regionbase, ar_tools);