diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2016-09-28 16:06:50 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2016-09-28 16:08:45 +0300 |
commit | cbd3827d839b2ff28ae535f674e63611cb1c2c6c (patch) | |
tree | 4ca8b0c89981658997e9a5da35a99301c0bde1df /source/blender/blenloader/intern | |
parent | 601ce6a89c4f7ecc974f40c85add491a7c295c6f (diff) |
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. :(((
Diffstat (limited to 'source/blender/blenloader/intern')
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 49e5255eccc..6678189872c 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); |