summaryrefslogtreecommitdiff
path: root/NxWidgets/libnxwidgets/src/crlepalettebitmap.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'NxWidgets/libnxwidgets/src/crlepalettebitmap.cxx')
-rw-r--r--NxWidgets/libnxwidgets/src/crlepalettebitmap.cxx12
1 files changed, 11 insertions, 1 deletions
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;
}