c5e10920f92be5b2655ae7bc4d8511001092f960
The code ensuring a valid liboverride hierarchy root ID pointer for all liboverrides in a given Main would fail in some cases, and crash on asserts (in Debug builds) or due to corrupted data later in code (release builds). The main issue fixed here is re-entry in case of dependency loops (a same ID being checked more than once within the same chain of recursive calls to ensure its hierarchy root is valid). Solved the usual way now, using the intermediate 'PROCESSING' flag instead of setting immediately the 'PROCESSED' one, when recursively processing the chain of dependencies. A second issue fixed in that code was that in some cases, it could leave the invalid existing hierarchy root pointer unchanged, because it could not find a 'valid enough' alternative. NOTE: This data corruption is presumably caused by 'make local' operations on liboverride hierarchy root IDs. This will be addressed as a second commit. For reference, issue is reproducible when opening `/promo/splash/040_0010.lighting.splash.blend` from Pets SVN repo r3106.
…
Blender
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
Project Pages
Development
License
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.
See blender.org/about/license for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
