Fix an error in some graphics error handling

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4059 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2011-10-23 21:27:03 +00:00
parent 1032a15d5a
commit 00dae09cda
2 changed files with 7 additions and 4 deletions
+2 -1
View File
@@ -2170,4 +2170,5 @@
* graphics/nxmu/nx_getrectangle.c, graphics/nxsu/nx_getrectangle.c, * graphics/nxmu/nx_getrectangle.c, graphics/nxsu/nx_getrectangle.c,
graphics/mxtk/nx_getwindow.c, graphics/nxmu/nx_gettoobar.c: New graphics/mxtk/nx_getwindow.c, graphics/nxmu/nx_gettoobar.c: New
interfaces to read from graphics memory interfaces to read from graphics memory
* graphics/nxbe/nxbe_bitmap.c: Fix an error in the error handling that
can cause valid bitmaps to fail to render.
+5 -3
View File
@@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
* graphics/nxbe/nxbe_bitmap.c * graphics/nxbe/nxbe_bitmap.c
* *
* Copyright (C) 2008-2009 Gregory Nutt. All rights reserved. * Copyright (C) 2008-2009, 2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr> * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@@ -125,6 +125,7 @@ void nxbe_bitmap(FAR struct nxbe_window_s *wnd, FAR const struct nxgl_rect_s *de
struct nxgl_rect_s bounds; struct nxgl_rect_s bounds;
struct nxgl_point_s offset; struct nxgl_point_s offset;
struct nxgl_rect_s remaining; struct nxgl_rect_s remaining;
unsigned int deststride;
int i; int i;
#ifdef CONFIG_DEBUG #ifdef CONFIG_DEBUG
@@ -150,10 +151,11 @@ void nxbe_bitmap(FAR struct nxbe_window_s *wnd, FAR const struct nxgl_rect_s *de
} }
/* Verify that the width of the destination rectangle does not exceed the /* Verify that the width of the destination rectangle does not exceed the
* with of the source bitmap data * width of the source bitmap data
*/ */
if ((((bounds.pt2.x - offset.x) * wnd->be->plane[0].pinfo.bpp) >> 3) > stride) deststride = (((bounds.pt2.x - bounds.pt1.x + 1) * wnd->be->plane[0].pinfo.bpp + 7) >> 3);
if (deststride > stride)
{ {
gdbg("Bad dest width\n"); gdbg("Bad dest width\n");
return; return;