From cbd3827d839b2ff28ae535f674e63611cb1c2c6c Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 28 Sep 2016 15:06:50 +0200 Subject: 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. :((( --- source/blender/blenloader/intern/writefile.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'source/blender/blenloader') 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); -- cgit v1.2.3