Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-09-14 05:15:08 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-09-14 05:15:08 +0400
commit883117077bedb57d76af6ccd894fca3fa45407d2 (patch)
treeb89de7e37cbeee6dbc448eda152b037c19d59574 /source/blender/blenkernel/intern/mask.c
parent622ac250f94c6855d4deb5cee7156385badf62ae (diff)
fix for 2 crashes freeing masks
- freeing a mask from RNA BKE_libblock_free() twice on the mask. - loading a new blend file would only free the mask and not unlink it from nodes - it would access freed memory.
Diffstat (limited to 'source/blender/blenkernel/intern/mask.c')
-rw-r--r--source/blender/blenkernel/intern/mask.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 06d063574a5..97b46d4829d 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -910,7 +910,8 @@ void BKE_mask_layer_free_list(ListBase *masklayers)
}
}
-void BKE_mask_free(Mask *mask)
+/** free for temp copy, but don't manage unlinking from other pointers */
+void BKE_mask_free_nolib(Mask *mask)
{
BKE_mask_layer_free_list(&mask->masklayers);
}
@@ -928,7 +929,7 @@ static void ntree_unlink_mask_cb(void *calldata, struct ID *UNUSED(owner_id), st
}
}
-void BKE_mask_unlink(Main *bmain, Mask *mask)
+void BKE_mask_free(Main *bmain, Mask *mask)
{
bScreen *scr;
ScrArea *area;
@@ -991,7 +992,8 @@ void BKE_mask_unlink(Main *bmain, Mask *mask)
treetype->foreach_nodetree(bmain, (void *)mask, &ntree_unlink_mask_cb);
}
- BKE_libblock_free(&bmain->mask, mask);
+ /* free mask data */
+ BKE_mask_layer_free_list(&mask->masklayers);
}
void BKE_mask_coord_from_frame(float r_co[2], const float co[2], const float frame_size[2])