The problem is that color_exterior() sometimes starts with a terminating edge v1()==NULL and marks that edge and the twin as external.
When color_exterior() is called again, this time on the twin edge that is leading away from infinity, it finds the edge already marked and terminates recursion.
I found a situation where
voronoi_visualizer.cpp
would fail to mark some edges as external:The problem is that
color_exterior()
sometimes starts with a terminating edgev1()==NULL
and marks that edge and the twin as external. Whencolor_exterior()
is called again, this time on the twin edge that is leading away from infinity, it finds the edge already marked and terminates recursion.This could also be solved on the calling side: