code cleanup: replace memcpy for copy_v3_v3(), and fix for unlikely crash - if (ob->mat == NULL && ob->totcol)

This commit is contained in:
Campbell Barton
2012-09-15 06:03:49 +00:00
parent 3fc2ba5259
commit d98dd2585f

View File

@@ -305,17 +305,27 @@ void BKE_object_free(Object *ob)
ID *id = ob->data; ID *id = ob->data;
id->us--; id->us--;
if (id->us == 0) { if (id->us == 0) {
if (ob->type == OB_MESH) BKE_mesh_unlink(ob->data); switch (ob->type) {
else if (ob->type == OB_CURVE) BKE_curve_unlink(ob->data); case OB_MESH:
else if (ob->type == OB_MBALL) BKE_mball_unlink(ob->data); BKE_mesh_unlink((Mesh *)id);
break;
case OB_CURVE:
BKE_curve_unlink((Curve *)id);
break;
case OB_MBALL:
BKE_mball_unlink((MetaBall *)id);
break;
}
} }
ob->data = NULL; ob->data = NULL;
} }
if (ob->mat) {
for (a = 0; a < ob->totcol; a++) { for (a = 0; a < ob->totcol; a++) {
if (ob->mat[a]) ob->mat[a]->id.us--; if (ob->mat[a]) ob->mat[a]->id.us--;
} }
if (ob->mat) MEM_freeN(ob->mat); MEM_freeN(ob->mat);
}
if (ob->matbits) MEM_freeN(ob->matbits); if (ob->matbits) MEM_freeN(ob->matbits);
ob->mat = NULL; ob->mat = NULL;
ob->matbits = NULL; ob->matbits = NULL;
@@ -1758,7 +1768,7 @@ static void give_parvert(Object *par, int nr, float vec[3])
BMEditMesh *em; BMEditMesh *em;
int a, count; int a, count;
vec[0] = vec[1] = vec[2] = 0.0f; zero_v3(vec);
if (par->type == OB_MESH) { if (par->type == OB_MESH) {
Mesh *me = par->data; Mesh *me = par->data;
@@ -1850,7 +1860,7 @@ static void give_parvert(Object *par, int nr, float vec[3])
while (a--) { while (a--) {
if (count == nr) { if (count == nr) {
found = 1; found = 1;
memcpy(vec, bp->vec, sizeof(float) * 3); copy_v3_v3(vec, bp->vec);
break; break;
} }
count++; count++;
@@ -1875,9 +1885,9 @@ static void give_parvert(Object *par, int nr, float vec[3])
while (a--) { while (a--) {
if (count == nr) { if (count == nr) {
if (co) if (co)
memcpy(vec, co, 3 * sizeof(float)); copy_v3_v3(vec, co);
else else
memcpy(vec, bp->vec, 3 * sizeof(float)); copy_v3_v3(vec, bp->vec);
break; break;
} }
count++; count++;