Index: lib/arrows.c
===================================================================
RCS file: /cvs/gnome/dia/lib/arrows.c,v
retrieving revision 1.38
diff -u -r1.38 arrows.c
--- lib/arrows.c	22 Jan 2006 14:13:30 -0000	1.38
+++ lib/arrows.c	28 Sep 2006 19:49:39 -0000
@@ -107,11 +107,17 @@
 void
 calculate_arrow_point(const Arrow *arrow, const Point *to, const Point *from,
 		      Point *move_arrow, Point *move_line,
-		      const real linewidth)
+		      real linewidth)
 {
   real add_len;
   real angle;
   Point tmp;
+
+  /* Otherwise line is drawn through arrow
+   * head for some hollow arrow heads
+   * */
+  if (linewidth == 0.0)
+    linewidth = 0.0001;
 
   /* First, we move the arrow head backwards.
    * This in most cases just accounts for the linewidth of the arrow.
Index: lib/arrows.h
===================================================================
RCS file: /cvs/gnome/dia/lib/arrows.h,v
retrieving revision 1.32
diff -u -r1.32 arrows.h
--- lib/arrows.h	18 Jun 2005 17:25:24 -0000	1.32
+++ lib/arrows.h	28 Sep 2006 19:49:39 -0000
@@ -95,7 +95,7 @@
 void
 calculate_arrow_point(const Arrow *arrow, const Point *to, const Point *from,
 		      Point *move_arrow, Point *move_line,
-		      const real linewidth);
+		      real linewidth);
 
 /* Transforms 'start' to be at the back end of the arrow, and puts the
  * tip of the arrow into 'arrowtip'.
