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 <bastien@blender.org>2020-08-21 18:28:50 +0300
committerJeroen Bakker <jeroen@blender.org>2020-08-26 12:19:00 +0300
commita994e7a4b9c3b3cc7d2dc1967df28f33e506b1a9 (patch)
tree406349af13a0280d34a18bb9cebbc05e6acaf90c
parent22d8506ae5796fb1d385fd44bba617e0f935270a (diff)
Fix critical bug in foreach ID looper of Scene data-block.
Since stone age of lib_query, the code would iterate over the current list of active sequences (from a meta strip e.g.), and not over the whole list of those. This is a critical issue as it means in some cases (editing a meta strip typically), some ID pointers would be missed/ignored by this foreach looper, which is now at the center of most of our ID management code. This caused a bug here at the studio, leading to loss of all sound IDs used by sound strips when editing and undoing inside a meta strip, since ID refcounting would not happen properly on strips using sounds outside the meta-strip context during file reading of the undo steps. To be backported to 2.83. Differential Revision: https://developer.blender.org/D8671
-rw-r--r--source/blender/blenkernel/intern/lib_query.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/lib_query.c b/source/blender/blenkernel/intern/lib_query.c
index 2ca03fd5d7e..baae1e55897 100644
--- a/source/blender/blenkernel/intern/lib_query.c
+++ b/source/blender/blenkernel/intern/lib_query.c
@@ -644,7 +644,7 @@ static void library_foreach_ID_link(Main *bmain,
}
if (scene->ed) {
Sequence *seq;
- SEQP_BEGIN (scene->ed, seq) {
+ SEQ_BEGIN (scene->ed, seq) {
CALLBACK_INVOKE(seq->scene, IDWALK_CB_NEVER_SELF);
CALLBACK_INVOKE(seq->scene_camera, IDWALK_CB_NOP);
CALLBACK_INVOKE(seq->clip, IDWALK_CB_USER);