Fix T76738: Duplicate brushes cause assertion on undo

This commit is contained in:
Campbell Barton 2020-05-15 17:45:41 +10:00
parent 6a850f3cc8
commit 3c0fd51cf4
Notes: blender-bot 2023-02-14 06:47:29 +01:00
Referenced by issue #76738, Assert failure undoing view layer creation
2 changed files with 22 additions and 10 deletions

View File

@ -27,7 +27,7 @@
* \note Use #STRINGIFY() rather than defining with quotes.
*/
#define BLENDER_VERSION 283
#define BLENDER_SUBVERSION 16
#define BLENDER_SUBVERSION 17
/** Several breakages with 280, e.g. collections vs layers. */
#define BLENDER_MINVERSION 280
#define BLENDER_MINSUBVERSION 0

View File

@ -5046,6 +5046,27 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
if (!MAIN_VERSION_ATLEAST(bmain, 283, 17)) {
/* Reset the cloth mass to 1.0 in brushes with an invalid value. */
for (Brush *br = bmain->brushes.first; br; br = br->id.next) {
if (br->sculpt_tool == SCULPT_TOOL_CLOTH) {
if (br->cloth_mass == 0.0f) {
br->cloth_mass = 1.0f;
}
}
}
}
/** Repair files from duplicate brushes added to blend files, see: T76738. */
if (!MAIN_VERSION_ATLEAST(bmain, 283, 17) ||
((bmain->versionfile == 290) && !MAIN_VERSION_ATLEAST(bmain, 290, 2))) {
short id_codes[] = {ID_BR, ID_PAL};
for (int i = 0; i < ARRAY_SIZE(id_codes); i++) {
ListBase *lb = which_libbase(bmain, id_codes[i]);
BKE_main_id_repair_duplicate_names_listbase(lb);
}
}
/**
* Versioning code until next subversion bump goes here.
*
@ -5058,14 +5079,5 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
*/
{
/* Keep this block, even when empty. */
/* Reset the cloth mass to 1.0 in brushes with an invalid value. */
for (Brush *br = bmain->brushes.first; br; br = br->id.next) {
if (br->sculpt_tool == SCULPT_TOOL_CLOTH) {
if (br->cloth_mass == 0.0f) {
br->cloth_mass = 1.0f;
}
}
}
}
}