Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2016-09-28 16:06:50 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2016-09-28 16:08:45 +0300
commitcbd3827d839b2ff28ae535f674e63611cb1c2c6c (patch)
tree4ca8b0c89981658997e9a5da35a99301c0bde1df /source/blender/blenloader
parent601ce6a89c4f7ecc974f40c85add491a7c295c6f (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')
-rw-r--r--source/blender/blenloader/intern/writefile.c12
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);