Index: src/obj_arc.c =================================================================== --- src/obj_arc.c (revision 5933) +++ src/obj_arc.c (revision 5934) @@ -245,8 +245,12 @@ pcb_coord_t pcb_arc_length(const pcb_arc_t *arc) { - double da = pcb_normalize_angle(arc->Delta); - double r = (arc->Width + arc->Height) / 2.0; /* TODO: lame approximation */ + double da = arc->Delta; + double r = ((double)arc->Width + (double)arc->Height) / 2.0; /* TODO: lame approximation */ + if (da < 0) + da = -da; + while(da > 360.0) + da = 360.0; return pcb_round(2.0*r*M_PI*da/360.0); } @@ -253,8 +257,8 @@ pcb_coord_t pcb_arc_area(const pcb_arc_t *arc) { return - pcb_arc_length(arc) * arc->Thickness /* body */ - + arc->Thickness * arc->Thickness * M_PI; /* cap circles */ + (pcb_arc_length(arc) * (double)arc->Thickness /* body */ + + (double)arc->Thickness * (double)arc->Thickness * (double)M_PI); /* cap circles */ } Index: src/obj_line.c =================================================================== --- src/obj_line.c (revision 5933) +++ src/obj_line.c (revision 5934) @@ -262,7 +262,7 @@ { pcb_coord_t dx = line->Point1.X - line->Point2.X; pcb_coord_t dy = line->Point1.Y - line->Point2.Y; - return pcb_round(sqrt(dx*dx + dy*dy)); + return pcb_round(sqrt((double)dx*(double)dx + (double)dy*(double)dy)); } pcb_coord_t pcb_line_area(const pcb_line_t *line)