[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50836] trunk/blender/source/blender/ editors/space_image/image_edit.c: fix for issue where you could easily make zero user datablocks ( especially with masks which default to fake user).

Campbell Barton ideasman42 at gmail.com
Mon Sep 24 02:05:04 CEST 2012


Revision: 50836
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50836
Author:   campbellbarton
Date:     2012-09-24 00:05:02 +0000 (Mon, 24 Sep 2012)
Log Message:
-----------
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).

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_image/image_edit.c

Modified: trunk/blender/source/blender/editors/space_image/image_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_edit.c	2012-09-23 23:44:10 UTC (rev 50835)
+++ trunk/blender/source/blender/editors/space_image/image_edit.c	2012-09-24 00:05:02 UTC (rev 50836)
@@ -78,8 +78,8 @@
 	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 @@
 	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);




More information about the Bf-blender-cvs mailing list