Commit: cbd3827d839b2ff28ae535f674e63611cb1c2c6c
Author: Bastien Montagne
Date:   Wed Sep 28 15:06:50 2016 +0200
Branches: master
https://developer.blender.org/rBcbd3827d839b2ff28ae535f674e63611cb1c2c6c

Fix T49460: Particle group instance 'Use Count' value gets reset on file-load.

Regression caused rBbcc863993ad, write code was assuming dw->ob was always 
valid,
wich is no more the case right after reading file e.g.

Another good example of how bad it is to use 'hidden' dependencies between 
datablocks. :(
And another fix to be backported to 2.78a. :(((

===================================================================

M       source/blender/blenloader/intern/writefile.c

===================================================================

diff --git a/source/blender/blenloader/intern/writefile.c 
b/source/blender/blenloader/intern/writefile.c
index 49e5255..6678189 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1306,13 +1306,11 @@ static void write_particlesettings(WriteData *wd, 
ListBase *idbase)
 
                        dw = part->dupliweights.first;
                        for (; dw; dw = dw->next) {
-                               /* update indices */
-                               dw->index = 0;
-                               if (part->dup_group) { /* can be NULL if lining 
fails or set to None */
-                                       go = part->dup_group->gobject.first;
-                                       while (go && go->ob != dw->ob) {
-                                               go = go->next;
-                                               dw->index++;
+                               /* update indices, but only if dw->ob is set 
(can be NULL after loading e.g.) */
+                               if (dw->ob != NULL) {
+                                       dw->index = 0;
+                                       if (part->dup_group) { /* can be NULL 
if lining fails or set to None */
+                                               for (go = 
part->dup_group->gobject.first; go && go->ob != dw->ob; go = go->next, 
dw->index++);
                                        }
                                }
                                writestruct(wd, DATA, ParticleDupliWeight, 1, 
dw);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to