Index: smoothing.c
===================================================================
RCS file: /home/grass/grassrepository/grass6/vector/v.generalize/smoothing.c,v
retrieving revision 1.2
diff -u -r1.2 smoothing.c
--- smoothing.c	3 Nov 2007 13:10:57 -0000	1.2
+++ smoothing.c	16 Dec 2007 18:35:00 -0000
@@ -258,7 +258,12 @@
 void refine_tangent(POINT * p)
 {
     double l = point_dist2(*p);
-    point_scalar(*p, (double)1.0 / sqrt(sqrt(sqrt(l))), p);
+    if (l < 1e-12) {
+	point_scalar(*p, 0.0, p);
+    }
+    else {
+	point_scalar(*p, (double)1.0 / sqrt(sqrt(sqrt(l))), p);
+    }
     return;
 }
 
@@ -281,7 +286,7 @@
 
     /* line is too short */
     if (n <= 2) {
-	return 1;
+	return n;
     }
 
     /* convert degrees=>radians */
