copy(): Make sure the copy of a derived class cannot share the data of the

original by replacing self.data temporarily, then using the update() method
on the new mapping object to populate it.
This closes SF bug #476616.
This commit is contained in:
Fred Drake 2001-11-05 17:40:48 +00:00
parent 9c2b514014
commit 3ce5af70e3

View file

@ -19,7 +19,14 @@ class UserDict:
if self.__class__ is UserDict:
return UserDict(self.data)
import copy
return copy.copy(self)
data = self.data
try:
self.data = {}
c = copy.copy(self)
finally:
self.data = data
c.update(self)
return c
def keys(self): return self.data.keys()
def items(self): return self.data.items()
def iteritems(self): return self.data.iteritems()