[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16623] trunk/blender/source/blender/src: Bugfix #17652: "K" mode for controlling keys and drivers cause crashes
Joshua Leung
aligorith at gmail.com
Sat Sep 20 12:02:13 CEST 2008
Revision: 16623
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16623
Author: aligorith
Date: 2008-09-20 12:02:13 +0200 (Sat, 20 Sep 2008)
Log Message:
-----------
Bugfix #17652: "K" mode for controlling keys and drivers cause crashes
When using a transform and there didn't exist an IPO-channel for that transform's focus (i.e. no rot curves when rotating) and "K" mode was active, there would be a crash due to missing checks for such situations.
Modified Paths:
--------------
trunk/blender/source/blender/src/editipo.c
trunk/blender/source/blender/src/transform.c
trunk/blender/source/blender/src/transform_conversions.c
Modified: trunk/blender/source/blender/src/editipo.c
===================================================================
--- trunk/blender/source/blender/src/editipo.c 2008-09-20 09:17:40 UTC (rev 16622)
+++ trunk/blender/source/blender/src/editipo.c 2008-09-20 10:02:13 UTC (rev 16623)
@@ -3589,15 +3589,11 @@
icu= icu->next;
}
-
- ik= lb->first;
- while(ik) {
- /* map ipo-keys for drawing/editing if scaled ipo */
- if (NLA_IPO_SCALED) {
+ if (NLA_IPO_SCALED) {
+ for (ik= lb->first; ik; ik= ik->next) {
+ /* map ipo-keys for drawing/editing if scaled ipo */
ik->val= get_action_frame_inv(OBACT, ik->val);
}
-
- ik= ik->next;
}
}
Modified: trunk/blender/source/blender/src/transform.c
===================================================================
--- trunk/blender/source/blender/src/transform.c 2008-09-20 09:17:40 UTC (rev 16622)
+++ trunk/blender/source/blender/src/transform.c 2008-09-20 10:02:13 UTC (rev 16623)
@@ -2548,9 +2548,9 @@
float rot[3];
/* current IPO value for compatible euler */
- current_rot[0] = tdi->rotx[0];
- current_rot[1] = tdi->roty[0];
- current_rot[2] = tdi->rotz[0];
+ current_rot[0] = (tdi->rotx) ? tdi->rotx[0] : 0.0f;
+ current_rot[1] = (tdi->roty) ? tdi->roty[0] : 0.0f;
+ current_rot[2] = (tdi->rotz) ? tdi->rotz[0] : 0.0f;
VecMulf(current_rot, (float)(M_PI_2 / 9.0));
/* calculate the total rotatation in eulers */
Modified: trunk/blender/source/blender/src/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/src/transform_conversions.c 2008-09-20 09:17:40 UTC (rev 16622)
+++ trunk/blender/source/blender/src/transform_conversions.c 2008-09-20 10:02:13 UTC (rev 16623)
@@ -4033,7 +4033,7 @@
ob= base->object;
/* store ipo keys? */
- if (ob->id.lib == 0 && ob->ipo && ob->ipo->showkey && (ob->ipoflag & OB_DRAWKEY)) {
+ if ((ob->id.lib == 0) && (ob->ipo) && (ob->ipo->showkey) && (ob->ipoflag & OB_DRAWKEY)) {
elems.first= elems.last= NULL;
make_ipokey_transform(ob, &elems, 1); /* '1' only selected keys */
@@ -4041,7 +4041,7 @@
for(ik= elems.first; ik; ik= ik->next)
t->total++;
-
+
if(elems.first==NULL)
t->total++;
}
@@ -4074,7 +4074,7 @@
}
/* store ipo keys? */
- if(ob->id.lib == 0 && ob->ipo && ob->ipo->showkey && (ob->ipoflag & OB_DRAWKEY)) {
+ if((ob->id.lib == 0) && (ob->ipo) && (ob->ipo->showkey) && (ob->ipoflag & OB_DRAWKEY)) {
popfirst(&elems); // bring back pushed listbase
More information about the Bf-blender-cvs
mailing list