From: Zac Medico Date: Tue, 10 Mar 2009 06:14:56 +0000 (-0000) Subject: Handle ValueError and UnpicklingError inside PreservedLibsRegistry.load(). X-Git-Tag: v2.2_rc24~2 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=d2c2acad5199b7f5b52c5f8e0273650dc9f03dd6;p=portage.git Handle ValueError and UnpicklingError inside PreservedLibsRegistry.load(). svn path=/main/trunk/; revision=12822 --- 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