From 80930559a36051aa68dc2b5f28ad3bb1637a9346 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 21 Oct 2013 00:25:43 -0700 Subject: [PATCH] Fixed bug 2012 - Algorithm logic getting wrong in ComputeOutCode Nitz I was going through the SDL_IntersectRectAndLine function and wondered to see the ComputeOutCode function implementation. The problem in this algo is, x and y axis are getting check with respect to 0, Which is wrong, it should be get checked with respect to rectangle x and y axis. --- src/video/SDL_rect.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/video/SDL_rect.c b/src/video/SDL_rect.c index 8dcb5b651..b6393fb2d 100644 --- a/src/video/SDL_rect.c +++ b/src/video/SDL_rect.c @@ -296,15 +296,16 @@ SDL_EnclosePoints(const SDL_Point * points, int count, const SDL_Rect * clip, #define CODE_LEFT 4 #define CODE_RIGHT 8 -static int ComputeOutCode(const SDL_Rect * rect, int x, int y) +static int +ComputeOutCode(const SDL_Rect * rect, int x, int y) { int code = 0; - if (y < 0) { + if (y < rect->y) { code |= CODE_TOP; } else if (y >= rect->y + rect->h) { code |= CODE_BOTTOM; } - if (x < 0) { + if (x < rect->x) { code |= CODE_LEFT; } else if (x >= rect->x + rect->w) { code |= CODE_RIGHT;