From 3ce5af70e352b3a8fbea8e3f27464b6ca2d66ebd Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Mon, 5 Nov 2001 17:40:48 +0000 Subject: [PATCH] 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. --- Lib/UserDict.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Lib/UserDict.py b/Lib/UserDict.py index b806ac1603..b78860fc9e 100644 --- a/Lib/UserDict.py +++ b/Lib/UserDict.py @@ -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() -- 2.40.0