diff --git a/Kernel_23/include/CGAL/Kernel/function_objects.h b/Kernel_23/include/CGAL/Kernel/function_objects.h index b71470a6262..7d43dbf4c2d 100644 --- a/Kernel_23/include/CGAL/Kernel/function_objects.h +++ b/Kernel_23/include/CGAL/Kernel/function_objects.h @@ -2650,7 +2650,7 @@ namespace CommonKernelFunctors { { CGAL_kernel_precondition(! K().collinear_3_object()(p,q,r) ); Vector_3 res = CGAL::cross_product(q-p, r-p); - res = res / CGAL::sqrt(res.squared_length()); + res = res / CGAL::approximate_sqrt(res.squared_length()); return res; } }; diff --git a/Stream_support/include/CGAL/IO/STL.h b/Stream_support/include/CGAL/IO/STL.h index dfa3ecded7e..1e2850fb994 100644 --- a/Stream_support/include/CGAL/IO/STL.h +++ b/Stream_support/include/CGAL/IO/STL.h @@ -319,10 +319,10 @@ bool write_STL(std::ostream& os, const Vector_3 n = collinear(p,q,r) ? Vector_3(1,0,0) : unit_normal(p,q,r); - const float coords[12] = { static_cast(n.x()), static_cast(n.y()), static_cast(n.z()), - static_cast(p.x()), static_cast(p.y()), static_cast(p.z()), - static_cast(q.x()), static_cast(q.y()), static_cast(q.z()), - static_cast(r.x()), static_cast(r.y()), static_cast(r.z()) }; + const float coords[12] = { static_cast(to_double(n.x())), static_cast(to_double(n.y())), static_cast(to_double(n.z())), + static_cast(to_double(p.x())), static_cast(to_double(p.y())), static_cast(to_double(p.z())), + static_cast(to_double(q.x())), static_cast(to_double(q.y())), static_cast(to_double(q.z())), + static_cast(to_double(r.x())), static_cast(to_double(r.y())), static_cast(to_double(r.z())) }; for(int i=0; i<12; ++i) os.write(reinterpret_cast(&coords[i]), sizeof(coords[i])); diff --git a/Stream_support/test/Stream_support/issue_9071.cpp b/Stream_support/test/Stream_support/issue_9071.cpp new file mode 100644 index 00000000000..ac166f6ad0b --- /dev/null +++ b/Stream_support/test/Stream_support/issue_9071.cpp @@ -0,0 +1,14 @@ +#include +#include + +#include +#include + +using Kernel = CGAL::Exact_predicates_exact_constructions_kernel; + +int main() { + std::vector points; + std::vector> polygons; + CGAL::IO::write_polygon_soup("xxx.off", points, polygons, CGAL::parameters::stream_precision(17)); + return 0; +}