[Bf-blender-cvs] [4370f8f] master: Fix T49623: Immediately crash trying to render attached file in Cycles
Sergey Sharybin
noreply at git.blender.org
Tue Oct 11 11:55:30 CEST 2016
Commit: 4370f8ffbde44442855275204689cc9ff3596306
Author: Sergey Sharybin
Date: Tue Oct 11 11:54:04 2016 +0200
Branches: master
https://developer.blender.org/rB4370f8ffbde44442855275204689cc9ff3596306
Fix T49623: Immediately crash trying to render attached file in Cycles
Original fix in this area was not really complete (but was the safest at
the release time). Now all the crazy configurations of slots going out
of sync should be handled here.
===================================================================
M source/blender/blenkernel/intern/mesh.c
===================================================================
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 2c6ed0d..446aef9 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -2368,14 +2368,9 @@ Mesh *BKE_mesh_new_from_object(
if (tmpcu->mat) {
for (i = tmpcu->totcol; i-- > 0; ) {
/* are we an object material or data based? */
- if (ob->matbits[i] && i >= ob->totcol) {
- tmpmesh->mat[i] = NULL;
- }
- else {
- tmpmesh->mat[i] = ob->matbits[i] ? ob->mat[i] : tmpcu->mat[i];
- }
+ tmpmesh->mat[i] = give_current_material(ob, i + 1);
- if ((ob->matbits[i] || do_mat_id_data_us) && tmpmesh->mat[i]) {
+ if (((ob->matbits && ob->matbits[i]) || do_mat_id_data_us) && tmpmesh->mat[i]) {
id_us_plus(&tmpmesh->mat[i]->id);
}
}
@@ -2392,14 +2387,9 @@ Mesh *BKE_mesh_new_from_object(
if (tmpmb->mat) {
for (i = tmpmb->totcol; i-- > 0; ) {
/* are we an object material or data based? */
- if (ob->matbits[i] && i >= ob->totcol) {
- tmpmesh->mat[i] = NULL;
- }
- else {
- tmpmesh->mat[i] = ob->matbits[i] ? ob->mat[i] : tmpmb->mat[i];
- }
+ tmpmesh->mat[i] = give_current_material(ob, i + 1);
- if ((ob->matbits[i] || do_mat_id_data_us) && tmpmesh->mat[i]) {
+ if (((ob->matbits[i] && ob->matbits) || do_mat_id_data_us) && tmpmesh->mat[i]) {
id_us_plus(&tmpmesh->mat[i]->id);
}
}
@@ -2417,14 +2407,9 @@ Mesh *BKE_mesh_new_from_object(
if (origmesh->mat) {
for (i = origmesh->totcol; i-- > 0; ) {
/* are we an object material or data based? */
- if (ob->matbits[i] && i >= ob->totcol) {
- tmpmesh->mat[i] = NULL;
- }
- else {
- tmpmesh->mat[i] = ob->matbits[i] ? ob->mat[i] : origmesh->mat[i];
- }
+ tmpmesh->mat[i] = give_current_material(ob, i + 1);
- if ((ob->matbits[i] || do_mat_id_data_us) && tmpmesh->mat[i]) {
+ if (((ob->matbits && ob->matbits[i]) || do_mat_id_data_us) && tmpmesh->mat[i]) {
id_us_plus(&tmpmesh->mat[i]->id);
}
}
More information about the Bf-blender-cvs
mailing list