Browse Source

Round coordinates so very small floating point values don't turn into 0x80000000

e.g. SDL_RenderDrawLineF(renderer, -1e20, -1e20, 10, 10);

Fixes https://github.com/libsdl-org/SDL/issues/6116
Sam Lantinga 2 years ago
parent
commit
50c5d23f7d
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/render/SDL_render.c

+ 2 - 2
src/render/SDL_render.c

@@ -2981,8 +2981,8 @@ RenderDrawLinesWithRectsF(SDL_Renderer * renderer,
                 frect->x += scale_x;
             }
         } else {
-            retval += RenderDrawLineBresenham(renderer, (int)points[i].x, (int)points[i].y,
-                                                        (int)points[i+1].x, (int)points[i+1].y, draw_last);
+            retval += RenderDrawLineBresenham(renderer, (int)SDL_roundf(points[i].x), (int)SDL_roundf(points[i].y),
+                                                        (int)SDL_roundf(points[i+1].x), (int)SDL_roundf(points[i+1].y), draw_last);
         }
         drew_line = SDL_TRUE;
     }