diff options
author | pixel <pixel> | 2004-05-24 23:18:59 +0000 |
---|---|---|
committer | pixel <pixel> | 2004-05-24 23:18:59 +0000 |
commit | 734f17aa8fc62e4e49104b35064df7c7619bee89 (patch) | |
tree | d4510b7fe46672106f00859de6d69b10e0e2e816 | |
parent | 5b1e50428eab9ea1d141b84e4579d77ac7b8f2d9 (diff) |
Invalid cropping
-rw-r--r-- | lib/luapsx.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/luapsx.cpp b/lib/luapsx.cpp index 68cfd3e..0eb1b40 100644 --- a/lib/luapsx.cpp +++ b/lib/luapsx.cpp @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: luapsx.cpp,v 1.3 2004-04-27 17:52:15 pixel Exp $ */ +/* $Id: luapsx.cpp,v 1.4 2004-05-24 23:18:59 pixel Exp $ */ #include <LuaHandle.h> #include "luapsx.h" @@ -238,9 +238,21 @@ int sLua_psx::psx_proceed_statics(Lua * L, int n, int caller) { return 0; } + if ((sx + sw) < 0)
+ return;
+
+ if (sx >= dw)
+ return;
+
+ if ((sy + sh) < 0)
+ return;
+
+ if (sy >= dh)
+ return;
+
if (sy < 0) { - sstart += sw * bytes * sy; - sh -= sy; + sstart -= sw * bytes * sy; + sh += sy; sy = 0; } else { dstart += dw * 3 * sy; @@ -251,9 +263,9 @@ int sLua_psx::psx_proceed_statics(Lua * L, int n, int caller) { } if (sx < 0) { - sstart += sx * bytes; - sskip += sx * bytes; - sw -= sx; + sstart -= sx * bytes; + sskip -= sx * bytes; + sw += sx; sx = 0; } else { dstart += sx * 3; |