From aaf45d80e084cf715374b0b6a8833a8d938c7585 Mon Sep 17 00:00:00 2001 From: patacongo Date: Thu, 3 May 2012 23:06:37 +0000 Subject: Fix a positioning problem in CRlePaletteBitmap git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4694 42af7a65-404d-4744-a932-0658087f49c3 --- NxWidgets/libnxwidgets/src/crlepalettebitmap.cxx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'NxWidgets/libnxwidgets') diff --git a/NxWidgets/libnxwidgets/src/crlepalettebitmap.cxx b/NxWidgets/libnxwidgets/src/crlepalettebitmap.cxx index 31e300269..4c781e2c9 100644 --- a/NxWidgets/libnxwidgets/src/crlepalettebitmap.cxx +++ b/NxWidgets/libnxwidgets/src/crlepalettebitmap.cxx @@ -242,12 +242,22 @@ void CRlePaletteBitmap::startOfImage(void) bool CRlePaletteBitmap::advancePosition(nxgl_coord_t npixels) { + // Advance to the next column after consuming 'npixels' on this colum int newcol = m_col + npixels; + // Have we consumed the entire row? + while (newcol >= m_bitmap->width) { + // Advance to the next row + newcol -= m_bitmap->width; - if (++m_row >= m_bitmap->height) + m_row++; + + // If we still have pixels to account for but we have exceeded the + // the size of the bitmap, then return false + + if (newcol > 0 && m_row >= m_bitmap->height) { return false; } -- cgit v1.2.3