[Bf-blender-cvs] [d2296cd] master: Fix error copying cubic data

Campbell Barton noreply at git.blender.org
Sat May 7 13:43:53 CEST 2016


Commit: d2296cd5ec433fcfeee958d1490925befdef1447
Author: Campbell Barton
Date:   Sat May 7 19:15:27 2016 +1000
Branches: master
https://developer.blender.org/rBd2296cd5ec433fcfeee958d1490925befdef1447

Fix error copying cubic data

===================================================================

M	extern/curve_fit_nd/intern/curve_fit_cubic.c

===================================================================

diff --git a/extern/curve_fit_nd/intern/curve_fit_cubic.c b/extern/curve_fit_nd/intern/curve_fit_cubic.c
index f4f5d11..fdcb9f8 100644
--- a/extern/curve_fit_nd/intern/curve_fit_cubic.c
+++ b/extern/curve_fit_nd/intern/curve_fit_cubic.c
@@ -119,6 +119,11 @@ static Cubic *cubic_alloc(const uint dims)
 	return malloc(cubic_alloc_size(dims));
 }
 
+static void cubic_copy(Cubic *cubic_dst, const Cubic *cubic_src, const uint dims)
+{
+	memcpy(cubic_dst, cubic_src, cubic_alloc_size(dims));
+}
+
 static void cubic_init(
         Cubic *cubic,
         const double p0[], const double p1[], const double p2[], const double p3[],
@@ -766,7 +771,7 @@ static bool fit_cubic_to_points(
 	}
 	else {
 		Cubic *cubic_test = alloca(cubic_alloc_size(dims));
-		*cubic_test = *r_cubic;
+		cubic_copy(cubic_test, r_cubic, dims);
 
 		/* If error not too large, try some reparameterization and iteration */
 		double *u_prime = malloc(sizeof(double) * points_offset_len);
@@ -788,13 +793,13 @@ static bool fit_cubic_to_points(
 				free(u_prime);
 				free(u);
 
-				*r_cubic = *cubic_test;
+				cubic_copy(r_cubic, cubic_test, dims);
 				*r_error_max_sq = error_max_sq;
 				*r_split_index  = split_index;
 				return true;
 			}
 			else if (error_max_sq < *r_error_max_sq) {
-				*r_cubic = *cubic_test;
+				cubic_copy(r_cubic, cubic_test, dims);
 				*r_error_max_sq = error_max_sq;
 				*r_split_index = split_index;
 			}




More information about the Bf-blender-cvs mailing list