From 701e57e11d0e6d6292c3ca876ccc286a3c4c2cea Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 24 Sep 2012 00:05:02 +0000 Subject: fix for issue where you could easily make zero user datablocks (especially with masks which default to fake user). - Make mask - assign to image editor - disable fake user This would make the image space reference a zero user mask datablock which wouldn't be saved. solve the bug by making mask and image assignments check the real usercount of the ID block (not taking into account fake user). --- source/blender/editors/space_image/image_edit.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source/blender/editors/space_image/image_edit.c') diff --git a/source/blender/editors/space_image/image_edit.c b/source/blender/editors/space_image/image_edit.c index 92433449985..0d40a6ae007 100644 --- a/source/blender/editors/space_image/image_edit.c +++ b/source/blender/editors/space_image/image_edit.c @@ -78,8 +78,8 @@ void ED_space_image_set(SpaceImage *sima, Scene *scene, Object *obedit, Image *i if (sima->image) BKE_image_signal(sima->image, &sima->iuser, IMA_SIGNAL_USER_NEW_IMAGE); - if (sima->image && sima->image->id.us == 0) - sima->image->id.us = 1; + if (sima->image && ID_REAL_USERS(sima->image) <= 0) + sima->image->id.us = MAX2(sima->image->id.us, 0) + 1; if (obedit) WM_main_add_notifier(NC_GEOM | ND_DATA, obedit->data); @@ -97,8 +97,8 @@ void ED_space_image_set_mask(bContext *C, SpaceImage *sima, Mask *mask) sima->mask_info.mask = mask; /* weak, but same as image/space */ - if (sima->mask_info.mask && sima->mask_info.mask->id.us == 0) - sima->mask_info.mask->id.us = 1; + if (sima->mask_info.mask && ID_REAL_USERS(sima->mask_info.mask) <= 0) + sima->mask_info.mask->id.us = MAX2(sima->mask_info.mask->id.us, 0) + 1; if (C) { WM_event_add_notifier(C, NC_MASK | NA_SELECTED, mask); -- cgit v1.2.3