[Scummvm-cvs-logs] SF.net SVN: scummvm: [28914] scummvm/trunk/engines/lure/res_struct.h

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sun Sep 16 06:03:51 CEST 2007


Revision: 28914
          http://scummvm.svn.sourceforge.net/scummvm/?rev=28914&view=rev
Author:   dreammaster
Date:     2007-09-15 21:03:50 -0700 (Sat, 15 Sep 2007)

Log Message:
-----------
Changed ManagedList to make it more thread safe

Modified Paths:
--------------
    scummvm/trunk/engines/lure/res_struct.h

Modified: scummvm/trunk/engines/lure/res_struct.h
===================================================================
--- scummvm/trunk/engines/lure/res_struct.h	2007-09-16 03:20:10 UTC (rev 28913)
+++ scummvm/trunk/engines/lure/res_struct.h	2007-09-16 04:03:50 UTC (rev 28914)
@@ -254,23 +254,28 @@
 	}
 
 	void clear() {
-		typename Common::List<T>::iterator i;
-		for (i = Common_List::begin(); i != Common_List::end(); ++i)
-			delete *i;
-		Common_List::clear();		
+		typename Common_List::iterator i = Common_List::begin();
+		while (i != Common_List::end()) {
+			T v = *i;
+			i = Common_List::erase(i);
+			delete v;
+		}
 	}
 
-	typename Common::List<T>::iterator erase(typename Common::List<T>::iterator pos) {
-		delete *pos;
-		return Common_List::erase(pos);
+	typename Common_List::iterator erase(typename Common_List::iterator pos) {
+		T obj = *pos;
+		typename Common_List::iterator result = Common_List::erase(pos);
+		delete obj;
+		return result;
 	}
 
-	typename Common::List<T>::iterator erase(typename Common::List<T>::iterator first, 
-			typename Common::List<T>::iterator last) {
-		typename Common::List<T>::iterator i;
-		for (i = first; i != last; ++i)
-			delete *i;
-		return Common_List::erase(first, last);
+	typename Common_List::iterator erase(typename Common_List::iterator first, 
+			typename Common_List::iterator last) {
+
+		while (first != last)
+			erase(first++);
+
+		return last;
 	}
 };
 


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