Prevent an IOError with errno != ENOENT from being swallowed in flat_hash._setitem().
authorZac Medico <zmedico@gentoo.org>
Sat, 18 Mar 2006 21:11:24 +0000 (21:11 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 18 Mar 2006 21:11:24 +0000 (21:11 -0000)
svn path=/main/trunk/; revision=2944

pym/cache/flat_hash.py

index 605315c6d5b099c2cbb2592034f8f3ed38640a66..8ebd70f7dc02fe2f201f9303670af945c7dc7ddc 100644 (file)
@@ -70,16 +70,16 @@ class database(fs_template.FsBased):
                s = cpv.rfind("/")
                fp = os.path.join(self.location,cpv[:s],".update.%i.%s" % (os.getpid(), cpv[s+1:]))
                try:    myf=open(fp, "w")
-               except IOError, ie:
-                       if errno.ENOENT == ie.errno:
+               except (IOError, OSError), e:
+                       if errno.ENOENT == e.errno:
                                try:
                                        self._ensure_dirs(cpv)
                                        myf=open(fp,"w")
                                except (OSError, IOError),e:
                                        raise cache_errors.CacheCorruption(cpv, e)
-               except OSError, e:
-                       raise cache_errors.CacheCorruption(cpv, e)
-               
+                       else:
+                               raise cache_errors.CacheCorruption(cpv, e)
+
                for k, v in values.items():
                        if k != "_mtime_" and (k == "_eclasses_" or k in self._known_keys):
                                myf.writelines("%s=%s\n" % (k, v))