... also, a quick review of all the LINE-related code in geo_ops.c
says that it's just *full* of bugs. Aside from the issues already
mentioned:
line_recv fails to reject A=B=0
line_perp can get division by zero
silly coding in line_eq (A and B can't both be zero, no need to look at C)
line_distance ignores l1->A, suspicious
close_pl busted in same way as line_interpt_internal
close_ps ignores tmp->B, suspicious
I suspect that a lot of this code was originally written on the assumption
that vertical and horizontal lines would have B or A exactly -1
respectively. Somewhere along the line that restriction got dropped,
but the code wasn't improved to cope.
regards, tom lane