[Scummvm-cvs-logs] SF.net SVN: scummvm:[46993] scummvm/trunk/engines/sci

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Mon Jan 4 23:23:46 CET 2010


Revision: 46993
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46993&view=rev
Author:   m_kiewitz
Date:     2010-01-04 22:23:45 +0000 (Mon, 04 Jan 2010)

Log Message:
-----------
SCI: fix crash due accessing invalid object (implemented deleteScreenitem)

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kernel32.cpp
    scummvm/trunk/engines/sci/gui/gui.cpp
    scummvm/trunk/engines/sci/gui/gui.h

Modified: scummvm/trunk/engines/sci/engine/kernel32.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel32.cpp	2010-01-04 22:14:34 UTC (rev 46992)
+++ scummvm/trunk/engines/sci/engine/kernel32.cpp	2010-01-04 22:23:45 UTC (rev 46993)
@@ -676,6 +676,10 @@
 }
 
 reg_t kDeleteScreenItem(EngineState *s, int argc, reg_t *argv) {
+	reg_t viewObj = argv[0];
+
+	s->_gui->deleteScreenItem(viewObj);
+	
 	/*
 	reg_t viewObj = argv[0];
 	uint16 viewId = GET_SEL32V(s->_segMan, viewObj, view);

Modified: scummvm/trunk/engines/sci/gui/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.cpp	2010-01-04 22:14:34 UTC (rev 46992)
+++ scummvm/trunk/engines/sci/gui/gui.cpp	2010-01-04 22:23:45 UTC (rev 46993)
@@ -844,6 +844,16 @@
 	_screenItemCount++;
 }
 
+void SciGui::deleteScreenItem(reg_t object) {
+	for (int itemNr = 0; itemNr < _screenItemCount; itemNr++) {
+		if (_screenItems[itemNr] == object) {
+			_screenItems.remove_at(itemNr);
+			_screenItemCount--;
+			return;
+		}
+	}
+}
+
 void SciGui::frameOut() {
 	for (int itemNr = 0; itemNr < _screenItemCount; itemNr++) {
 		reg_t viewObj = _screenItems[itemNr];

Modified: scummvm/trunk/engines/sci/gui/gui.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.h	2010-01-04 22:14:34 UTC (rev 46992)
+++ scummvm/trunk/engines/sci/gui/gui.h	2010-01-04 22:23:45 UTC (rev 46993)
@@ -155,6 +155,7 @@
 
 	// SCI32
 	virtual void addScreenItem(reg_t object);
+	virtual void deleteScreenItem(reg_t object);
 	virtual void frameOut();
 
 	virtual bool debugUndither(bool flag);


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