Handle KeyError from aux_get() inside dbapi._iter_match_slot() and
authorZac Medico <zmedico@gentoo.org>
Thu, 26 Jun 2008 18:24:34 +0000 (18:24 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 26 Jun 2008 18:24:34 +0000 (18:24 -0000)
_iter_match_use(). Thanks to grobian for reporting.

svn path=/main/trunk/; revision=10802

pym/portage/dbapi/__init__.py

index ba37c867e2ca2cec6fd0bda32440d4b2072f63fe..54ce7afc328955dfb147652d66f288b37d065042 100644 (file)
@@ -135,8 +135,11 @@ class dbapi(object):
 
        def _iter_match_slot(self, atom, cpv_iter):
                for cpv in cpv_iter:
-                       if self.aux_get(cpv, ["SLOT"])[0] == atom.slot:
-                               yield cpv
+                       try:
+                               if self.aux_get(cpv, ["SLOT"])[0] == atom.slot:
+                                       yield cpv
+                       except KeyError:
+                               continue
 
        def _iter_match_use(self, atom, cpv_iter):
                """
@@ -146,7 +149,10 @@ class dbapi(object):
                if self._iuse_implicit is None:
                        self._iuse_implicit = self.settings._get_implicit_iuse()
                for cpv in cpv_iter:
-                       iuse, use = self.aux_get(cpv, ["IUSE", "USE"])
+                       try:
+                               iuse, use = self.aux_get(cpv, ["IUSE", "USE"])
+                       except KeyError:
+                               continue
                        use = use.split()
                        iuse = self._iuse_implicit.union(
                                re.escape(x.lstrip("+-")) for x in iuse.split())