[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42369] trunk/blender/source/blender/ editors/transform/transform_input.c: Fix #29483: edge slide gives nan when zoomed in close.

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Dec 3 14:16:41 CET 2011


Revision: 42369
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42369
Author:   blendix
Date:     2011-12-03 13:16:32 +0000 (Sat, 03 Dec 2011)
Log Message:
-----------
Fix #29483: edge slide gives nan when zoomed in close. Cause was integer
overflow leading to negative value for sqrt().

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform_input.c

Modified: trunk/blender/source/blender/editors/transform/transform_input.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_input.c	2011-12-03 06:10:32 UTC (rev 42368)
+++ trunk/blender/source/blender/editors/transform/transform_input.c	2011-12-03 13:16:32 UTC (rev 42369)
@@ -189,16 +189,16 @@
 
 static void InputCustomRatio(TransInfo *UNUSED(t), MouseInput *mi, const int mval[2], float output[3])
 {
-	float length;
-	float distance;
+	double length;
+	double distance;
+	double dx, dy;
 	int *data = mi->data;
-	int dx, dy;
 	
 	if (data) {
 		dx = data[2] - data[0];
 		dy = data[3] - data[1];
 		
-		length = (float)sqrtf(dx*dx + dy*dy);
+		length = sqrt(dx*dx + dy*dy);
 		
 		if (mi->precision) {
 			/* deal with Shift key by adding motion / 10 to motion before shift press */
@@ -216,7 +216,7 @@
 			distance = (length != 0.0f)? (mdx*dx + mdy*dy) / length: 0.0f;
 		}
 
-		output[0] = (length != 0.0f)? distance / length: 0.0f;
+		output[0] = (float)((length != 0.0f)? distance / length: 0.0f);
 	}
 }
 




More information about the Bf-blender-cvs mailing list