That bug has been detected by a warning:
https://cgal.geometryfactory.com/CGAL/testsuite/CGAL-4.10-Ic-16/Intersections_3/TestReport_lrineau_Ubuntu-latest-GCC6-CXX1z.gz
```
/mnt/testsuite/include/CGAL/Intersections_3/intersection_3_1_impl.h: In function 'typename CGAL::Intersection_traits<K, typename K::Plane_3, typename K::Segment_3>::result_type CGAL::internal::intersection(const typename K::Plane_3&, const typename K::Segment_3&, const K&) [with K = CGAL::Simple_cartesian<CGAL::Gmpq>]':
/mnt/testsuite/include/CGAL/Intersections_3/intersection_3_1_impl.h:1105:13: warning: this statement may fall through [-Wimplicit-fallthrough]
}
^
/mnt/testsuite/include/CGAL/Intersections_3/intersection_3_1_impl.h:1107:9: note: here
case ON_NEGATIVE_SIDE:
^~~~
/mnt/testsuite/include/CGAL/Intersections_3/intersection_3_1_impl.h:1071:9: warning: this statement may fall through [-Wimplicit-fallthrough]
switch (target_side) {
^~~~~~
/mnt/testsuite/include/CGAL/Intersections_3/intersection_3_1_impl.h:1090:5: note: here
case ON_NEGATIVE_SIDE:
^~~~
```
Now, the incorrect fallthrough is replaced by the return of the empty
set.
The warning was:
[...]/include/CGAL/internal/Intersections_3/Bbox_3_Segment_3_do_intersect.h:353:9: warning: variable 'b' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized]
if( (px == qx) || // <=> (dmin == 0)
^~~~~~~~~~
[...]/include/CGAL/internal/Intersections_3/Bbox_3_Segment_3_do_intersect.h:408:12: note: in instantiation of function template specialization 'CGAL::internal::do_intersect_bbox_segment_aux<float, true, true, false>' requested here
return do_intersect_bbox_segment_aux<FT, true, true, false>(
^
[...]/include/CGAL/Kernel/function_objects.h:2052:14: note: in instantiation of function template specialization 'CGAL::internal::do_intersect<CGAL::Simple_cartesian<float> >' requested here
{ return internal::do_intersect(t1, t2, K()); }
^
[...]/include/CGAL/internal/Intersections_3/Bbox_3_Segment_3_do_intersect.h:428:10: note: in instantiation of function template specialization 'CGAL::CommonKernelFunctors::Do_intersect_3<CGAL::Simple_cartesian<float> >::operator()<CGAL::Segment_3<CGAL::Simple_cartesian<float>>, CGAL::Bbox_3>' requested here
return typename K::Do_intersect_3()(segment, bbox);
^
[...]/cmake/platforms/x86-64_Linux-2.6_llvm-clang-with-g++-4.6.2_F16/test/Intersections_3/bbox_other_do_intersect_test.cpp:67:12: note: in instantiation of function template specialization 'CGAL::do_intersect<CGAL::Simple_cartesian<float> >' requested here
bool b = CGAL::do_intersect(t,bbox);
^
[...]/cmake/platforms/x86-64_Linux-2.6_llvm-clang-with-g++-4.6.2_F16/test/Intersections_3/bbox_other_do_intersect_test.cpp:416:12: note: in instantiation of function template specialization 'test_aux<CGAL::Segment_3<CGAL::Simple_cartesian<float>> >' requested here
bool b = test_aux(s12,"s12",bbox,false);
^
[...]/cmake/platforms/x86-64_Linux-2.6_llvm-clang-with-g++-4.6.2_F16/test/Intersections_3/bbox_other_do_intersect_test.cpp:665:12: note: in instantiation of function template specialization 'test<CGAL::Simple_cartesian<float> >' requested here
bool b = test<K>(exact_predicates) &&
^
[...]/cmake/platforms/x86-64_Linux-2.6_llvm-clang-with-g++-4.6.2_F16/test/Intersections_3/bbox_other_do_intersect_test.cpp:678:7: note: in instantiation of function template specialization 'test_kernel<CGAL::Simple_cartesian<float> >' requested here
b = test_kernel<CGAL::Simple_cartesian<float> >(false);
^
[...]/include/CGAL/internal/Intersections_3/Bbox_3_Segment_3_do_intersect.h:360:25: note: uninitialized use occurs here
if(is_indeterminate(b)) return b; // Note that the default-constructed
^
[...]/include/CGAL/internal/Intersections_3/Bbox_3_Segment_3_do_intersect.h:353:9: note: remove the '||' if its condition is always false
if( (px == qx) || // <=> (dmin == 0)
^~~~~~~~~~~~~
[...]/include/CGAL/internal/Intersections_3/Bbox_3_Segment_3_do_intersect.h:351:23: note: initialize the variable 'b' to silence this warning
Is_greater_value b;
^
= false