From 5474659211db6936a4c1224c8e0e891c26f3f190 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 24 Aug 2008 21:14:20 +0000 Subject: Fix _ObjectKey.__eq__() to account for potential hash collisions that would break dict behavior. Thanks to Lucian Poston for spotting this. svn path=/main/trunk/; revision=11473 --- pym/portage/dbapi/vartree.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 598845e0b..2c030c13c 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -169,11 +169,12 @@ class LinkageMap(object): return hash(self._key) def __eq__(self, other): - if isinstance(other, self.__class__): - other_key = other._key - else: - other_key = other - return self._key == other_key + if not isinstance(other, self.__class__): + # Can't safely return True in this case since + # if there is a hash collision then __eq__ needs + # to be relied upon for correct dict behavior. + return False + return self._key == other._key def _generate_object_key(self, object): """ -- cgit v1.2.3-1-g7c22