diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-09-03 11:39:05 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-09-03 11:39:05 -0700 |
commit | bc636fe8f9720957f29e5a07cd98531f20368ddd (patch) | |
tree | 2904f9452090b7019044b1e24e1cc0d56002f579 /pym/portage/util | |
parent | 3f9239de54cc90972750f673102f88b824e500ba (diff) | |
download | portage-bc636fe8f9720957f29e5a07cd98531f20368ddd.tar.gz portage-bc636fe8f9720957f29e5a07cd98531f20368ddd.tar.bz2 portage-bc636fe8f9720957f29e5a07cd98531f20368ddd.zip |
Handle unpickle AttributeError (bug #381705).
Diffstat (limited to 'pym/portage/util')
-rw-r--r-- | pym/portage/util/_dyn_libs/PreservedLibsRegistry.py | 2 | ||||
-rw-r--r-- | pym/portage/util/mtimedb.py | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/pym/portage/util/_dyn_libs/PreservedLibsRegistry.py b/pym/portage/util/_dyn_libs/PreservedLibsRegistry.py index b916051a1..a1814981d 100644 --- a/pym/portage/util/_dyn_libs/PreservedLibsRegistry.py +++ b/pym/portage/util/_dyn_libs/PreservedLibsRegistry.py @@ -60,7 +60,7 @@ class PreservedLibsRegistry(object): f = open(_unicode_encode(self._filename, encoding=_encodings['fs'], errors='strict'), 'rb') self._data = pickle.load(f) - except (ValueError, pickle.UnpicklingError) as e: + except (AttributeError, ValueError, pickle.UnpicklingError) as e: writemsg_level(_("!!! Error loading '%s': %s\n") % \ (self._filename, e), level=logging.ERROR, noiselevel=-1) except (EOFError, IOError) as e: diff --git a/pym/portage/util/mtimedb.py b/pym/portage/util/mtimedb.py index 67f93e819..bc4f97c53 100644 --- a/pym/portage/util/mtimedb.py +++ b/pym/portage/util/mtimedb.py @@ -9,6 +9,7 @@ try: except ImportError: import pickle +import errno import portage from portage import _unicode_encode from portage.data import portage_gid, uid @@ -33,8 +34,11 @@ class MtimeDB(dict): d = mypickle.load() f.close() del f - except (IOError, OSError, EOFError, ValueError, pickle.UnpicklingError) as e: - if isinstance(e, pickle.UnpicklingError): + except (AttributeError, EnvironmentError, ValueError, pickle.UnpicklingError) as e: + if isinstance(e, EnvironmentError) and \ + getattr(e, 'errno', None) in (errno.ENOENT, errno.EACCES): + pass + else: writemsg(_("!!! Error loading '%s': %s\n") % \ (filename, str(e)), noiselevel=-1) del e |