diff options
author | Ton Roosendaal <ton@blender.org> | 2013-03-05 15:19:21 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2013-03-05 15:19:21 +0400 |
commit | dab6f8f5593876ac1c1f9d445c35401ed840b574 (patch) | |
tree | 23b0c46d395eb883c98d6fbd1c83e29b244fd7ca /source/blender/blenkernel/intern/blender.c | |
parent | f81b59479034bcf1d8055e0512f55204b256edfc (diff) |
Bug fix #34534
Fix for 2.66a
The new Copy/Paste objects feature could hang in eternal loop.
Only happens for objects that refer to another scene via linkage.
This fix then crashed Blender, needed to add a NULL check for screens.
Diffstat (limited to 'source/blender/blenkernel/intern/blender.c')
-rw-r--r-- | source/blender/blenkernel/intern/blender.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index be316197078..9a21a9648c9 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -899,7 +899,9 @@ static void copybuffer_doit(void *UNUSED(handle), Main *UNUSED(bmain), void *vid { if (vid) { ID *id = vid; - id->flag |= LIB_NEED_EXPAND | LIB_DOIT; + /* only tag for need-expand if not done, prevents eternal loops */ + if ((id->flag & LIB_DOIT) == 0) + id->flag |= LIB_NEED_EXPAND | LIB_DOIT; } } |