[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33450] trunk/blender/source/blender/ blenkernel/intern/curve.c: Bugfix #25026
Ton Roosendaal
ton at blender.org
Fri Dec 3 18:31:35 CET 2010
Revision: 33450
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33450
Author: ton
Date: 2010-12-03 18:31:34 +0100 (Fri, 03 Dec 2010)
Log Message:
-----------
Bugfix #25026
Nurbs edit: 'switch order' crashed when order was higher than amount of
points.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/curve.c
Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c 2010-12-03 17:28:41 UTC (rev 33449)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c 2010-12-03 17:31:34 UTC (rev 33450)
@@ -2906,38 +2906,41 @@
bp2--;
}
if(nu->type == CU_NURBS) {
- /* inverse knots */
- a= KNOTSU(nu);
- fp1= nu->knotsu;
- fp2= fp1+(a-1);
- a/= 2;
- while(fp1!=fp2 && a>0) {
- SWAP(float, *fp1, *fp2);
- a--;
- fp1++;
- fp2--;
- }
- /* and make in increasing order again */
- a= KNOTSU(nu);
- fp1= nu->knotsu;
- fp2=tempf= MEM_mallocN(sizeof(float)*a, "switchdirect");
- while(a--) {
- fp2[0]= fabs(fp1[1]-fp1[0]);
+ /* no knots for too short paths */
+ if(nu->knotsu) {
+ /* inverse knots */
+ a= KNOTSU(nu);
+ fp1= nu->knotsu;
+ fp2= fp1+(a-1);
+ a/= 2;
+ while(fp1!=fp2 && a>0) {
+ SWAP(float, *fp1, *fp2);
+ a--;
+ fp1++;
+ fp2--;
+ }
+ /* and make in increasing order again */
+ a= KNOTSU(nu);
+ fp1= nu->knotsu;
+ fp2=tempf= MEM_mallocN(sizeof(float)*a, "switchdirect");
+ while(a--) {
+ fp2[0]= fabs(fp1[1]-fp1[0]);
+ fp1++;
+ fp2++;
+ }
+
+ a= KNOTSU(nu)-1;
+ fp1= nu->knotsu;
+ fp2= tempf;
+ fp1[0]= 0.0;
fp1++;
- fp2++;
+ while(a--) {
+ fp1[0]= fp1[-1]+fp2[0];
+ fp1++;
+ fp2++;
+ }
+ MEM_freeN(tempf);
}
-
- a= KNOTSU(nu)-1;
- fp1= nu->knotsu;
- fp2= tempf;
- fp1[0]= 0.0;
- fp1++;
- while(a--) {
- fp1[0]= fp1[-1]+fp2[0];
- fp1++;
- fp2++;
- }
- MEM_freeN(tempf);
}
}
else {
More information about the Bf-blender-cvs
mailing list