[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29029] trunk/blender/source/blender/ blenkernel/intern/object.c: Fix #22422: Adding a new shape key with unchecked 'Relative' checkbox crashes blender
Sergey Sharybin
g.ulairi at gmail.com
Thu May 27 16:00:33 CEST 2010
Revision: 29029
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29029
Author: nazgul
Date: 2010-05-27 16:00:32 +0200 (Thu, 27 May 2010)
Log Message:
-----------
Fix #22422: Adding a new shape key with unchecked 'Relative' checkbox crashes blender
Reorder callning of add_keyblock and do_ob_key in insert_*key.
do_ob_key shouldn't be called for object with uninitialized key blocks.
NOTE: this commit not fixing problems with slurph
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/object.c
Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c 2010-05-27 12:46:42 UTC (rev 29028)
+++ trunk/blender/source/blender/blenkernel/intern/object.c 2010-05-27 14:00:32 UTC (rev 29029)
@@ -2879,15 +2879,18 @@
newkey= 1;
}
- kb= add_keyblock(key, name);
-
if(newkey || from_mix==FALSE) {
/* create from mesh */
+ kb= add_keyblock(key, name);
mesh_to_key(me, kb);
}
else {
/* copy from current values */
- kb->data= do_ob_key(scene, ob);
+ float *data= do_ob_key(scene, ob);
+
+ /* create new block with prepared data */
+ kb= add_keyblock(key, name);
+ kb->data= data;
kb->totelem= me->totvert;
}
@@ -2907,16 +2910,20 @@
newkey= 1;
}
- kb= add_keyblock(key, name);
+ if(newkey || from_mix==FALSE) {
+ kb= add_keyblock(key, name);
- if(newkey || from_mix==FALSE) {
/* create from lattice */
latt_to_key(lt, kb);
}
else {
/* copy from current values */
+ float *data= do_ob_key(scene, ob);
+
+ /* create new block with prepared data */
+ kb= add_keyblock(key, name);
kb->totelem= lt->pntsu*lt->pntsv*lt->pntsw;
- kb->data= do_ob_key(scene, ob);
+ kb->data= data;
}
return kb;
@@ -2936,16 +2943,19 @@
newkey= 1;
}
- kb= add_keyblock(key, name);
-
if(newkey || from_mix==FALSE) {
/* create from curve */
+ kb= add_keyblock(key, name);
curve_to_key(cu, kb, lb);
}
else {
/* copy from current values */
+ float *data= do_ob_key(scene, ob);
+
+ /* create new block with prepared data */
+ kb= add_keyblock(key, name);
kb->totelem= count_curveverts(lb);
- kb->data= do_ob_key(scene, ob);
+ kb->data= data;
}
return kb;
More information about the Bf-blender-cvs
mailing list