? patch.diff Index: model.py =================================================================== RCS file: /cvs/Twisted/twisted/web/woven/model.py,v retrieving revision 1.52 diff -c -r1.52 model.py *** model.py 26 Oct 2003 07:46:54 -0000 1.52 --- model.py 10 Dec 2003 09:30:29 -0000 *************** *** 94,100 **** """ Remove a view that the model no longer should keep track of. """ ! for weakref in self.views: ref = weakref() if ref is view or ref is None: self.views.remove(weakref) --- 94,101 ---- """ Remove a view that the model no longer should keep track of. """ ! # AM: loop on a _copy_ of the list, since we're changing it!!! ! for weakref in list(self.views): ref = weakref() if ref is view or ref is None: self.views.remove(weakref) *************** *** 117,123 **** self.cachedFor = None if changed is None: changed = {} retVal = [] ! for view in self.views: ref = view() if ref is not None: retVal.append((ref, ref.modelChanged(changed))) --- 118,125 ---- self.cachedFor = None if changed is None: changed = {} retVal = [] ! # AM: loop on a _copy_ of the list, since we're changing it!!! ! for view in list(self.views): ref = view() if ref is not None: retVal.append((ref, ref.modelChanged(changed))) *************** *** 125,136 **** self.views.remove(view) for key, value in self.subviews.items(): if value.wantsAllNotifications or changed.has_key(key): ! for item in value: ref = item() if ref is not None: retVal.append((ref, ref.modelChanged(changed))) else: ! self.views.remove(view) return retVal protected_names = ['initialize', 'addView', 'addSubview', 'removeView', 'notify', 'getSubmodel', 'setSubmodel', 'getData', 'setData'] --- 127,138 ---- self.views.remove(view) for key, value in self.subviews.items(): if value.wantsAllNotifications or changed.has_key(key): ! for item in list(value): ref = item() if ref is not None: retVal.append((ref, ref.modelChanged(changed))) else: ! value.remove(item) return retVal protected_names = ['initialize', 'addView', 'addSubview', 'removeView', 'notify', 'getSubmodel', 'setSubmodel', 'getData', 'setData']