[Scummvm-cvs-logs] SF.net SVN: scummvm:[33200] scummvm/branches/gsoc2008-gui/gui/ThemeRenderer .cpp

Tanoku at users.sourceforge.net Tanoku at users.sourceforge.net
Tue Jul 22 15:32:18 CEST 2008


Revision: 33200
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33200&view=rev
Author:   Tanoku
Date:     2008-07-22 13:32:18 +0000 (Tue, 22 Jul 2008)

Log Message:
-----------
Segfault in dirty rectangles is no longer a 'feature'. Fixed segfault with the last tab in config dialogs.

Modified Paths:
--------------
    scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp

Modified: scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp
===================================================================
--- scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp	2008-07-22 12:58:04 UTC (rev 33199)
+++ scummvm/branches/gsoc2008-gui/gui/ThemeRenderer.cpp	2008-07-22 13:32:18 UTC (rev 33200)
@@ -534,7 +534,7 @@
 	if (active >= 0) {
 		Common::Rect tabRect(r.left + active * (tabWidth + tabOffset), r.top, r.left + active * (tabWidth + tabOffset) + tabWidth, r.top + tabHeight);
 		const uint16 tabLeft = active * (tabWidth + tabOffset);
-		const uint16 tabRight =  r.right - tabRect.right;
+		const uint16 tabRight =  MAX(r.right - tabRect.right, 0);
 		queueDD(kDDTabActive, tabRect, (tabLeft << 16) | (tabRight & 0xFFFF));
 		queueDDText(kDDTabActive, tabRect, tabs[active]);
 	}
@@ -592,12 +592,12 @@
 
 	Common::List<Common::Rect>::iterator cur;
 	for (Common::List<Common::Rect>::iterator d = _dirtyScreen.begin(); d != _dirtyScreen.end(); ++d) {
-		cur = d++;
+		cur = d;
 
 		do {
+			++d;
 			if (cur->intersects(*d))
-				d = _dirtyScreen.erase(d);
-			else ++d;
+				d = _dirtyScreen.reverse_erase(d);
 		} while (d != _dirtyScreen.end());
 
 		d = cur;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list