From d2c2acad5199b7f5b52c5f8e0273650dc9f03dd6 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 10 Mar 2009 06:14:56 +0000 Subject: [PATCH] Handle ValueError and UnpicklingError inside PreservedLibsRegistry.load(). svn path=/main/trunk/; revision=12822 --- pym/portage/dbapi/vartree.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index e3dc6a049..48a2a1639 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -62,15 +62,21 @@ class PreservedLibsRegistry(object): def load(self): """ Reload the registry data from file """ + self._data = None try: self._data = pickle.load(open(self._filename, 'rb')) + except (ValueError, pickle.UnpicklingError), e: + writemsg_level("!!! Error loading '%s': %s\n" % \ + (self._filename, e), level=logging.ERROR, noiselevel=-1) except (EOFError, IOError), e: if isinstance(e, EOFError) or e.errno == errno.ENOENT: - self._data = {} + pass elif e.errno == PermissionDenied.errno: raise PermissionDenied(self._filename) else: - raise e + raise + if self._data is None: + self._data = {} self._data_orig = self._data.copy() def store(self): """ Store the registry data to file. No need to call this if autocommit -- 2.26.2