Sort out abs/fabs confusion.

My Mac has just upgraded itself to include a version of clang which
warns if you use abs() on a floating-point value, or fabs() on an
integer. Fixed the two occurrences that came up in this build (and
which were actual build failures, because of -Werror), one in each
direction.

I think both were benign. The potentially dangerous one was using abs
in place of fabs in grid_find_incentre(), because that could actually
lose precision, but I think that function had plenty of precision to
spare (grid point separation being of the order of tens of pixels) so
nothing should have gone seriously wrong with the old code.
This commit is contained in:
Simon Tatham
2015-04-10 07:55:16 +01:00
parent 10460d1bc7
commit 7f64f4a50e
2 changed files with 2 additions and 2 deletions

2
grid.c
View File

@ -1069,7 +1069,7 @@ void grid_find_incentre(grid_face *f)
eq[2] = eqs[0][3]*eqs[1][2] - eqs[1][3]*eqs[0][2]; eq[2] = eqs[0][3]*eqs[1][2] - eqs[1][3]*eqs[0][2];
/* Parametrise x and y in terms of some t. */ /* Parametrise x and y in terms of some t. */
if (abs(eq[0]) < abs(eq[1])) { if (fabs(eq[0]) < fabs(eq[1])) {
/* Parameter is x. */ /* Parameter is x. */
xt[0] = 1; xt[1] = 0; xt[0] = 1; xt[1] = 0;
yt[0] = -eq[0]/eq[1]; yt[1] = eq[2]/eq[1]; yt[0] = -eq[0]/eq[1]; yt[1] = eq[2]/eq[1];

View File

@ -1982,7 +1982,7 @@ static void draw_drag_indicator(drawing *dr, game_drawstate *ds,
/* Draw an arrow pointing away from/towards the origin cell. */ /* Draw an arrow pointing away from/towards the origin cell. */
int ox = COORD(ui->sx) + TILE_SIZE/2, oy = COORD(ui->sy) + TILE_SIZE/2; int ox = COORD(ui->sx) + TILE_SIZE/2, oy = COORD(ui->sy) + TILE_SIZE/2;
double tana, offset; double tana, offset;
double xdiff = fabs(ox - ui->dx), ydiff = fabs(oy - ui->dy); double xdiff = abs(ox - ui->dx), ydiff = abs(oy - ui->dy);
if (xdiff == 0) { if (xdiff == 0) {
ang = (oy > ui->dy) ? 0.0F : PI; ang = (oy > ui->dy) ? 0.0F : PI;