Fix buggy logic in WorldSet.load() that causes it to discard all of
authorZac Medico <zmedico@gentoo.org>
Mon, 14 Apr 2008 00:03:00 +0000 (00:03 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 14 Apr 2008 00:03:00 +0000 (00:03 -0000)
it's atoms in some cases (leading to loss of the whole world file).

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

pym/portage/sets/files.py

index 3abb3f88bbf9daac74851913e9897fd1e60c3360..f08a7d4230648fba8abf782d649f61912c48c9b5 100644 (file)
@@ -185,6 +185,7 @@ class WorldSet(EditablePackageSet):
        def load(self):
                atoms = []
                nonatoms = []
+               atoms_changed = False
                # load atoms and non-atoms from different files so the worldfile is 
                # backwards-compatible with older versions and other PMs, even though 
                # it's supposed to be private state data :/
@@ -205,11 +206,12 @@ class WorldSet(EditablePackageSet):
                                data = {}
                        atoms = data.keys()
                        self._mtime = mtime
+                       atoms_changed = True
                try:
                        mtime = os.stat(self._filename2).st_mtime
                except (OSError, IOError):
                        mtime = None
-               if (not self._loaded or self._mtime2 != mtime):
+               if (not self._loaded or self._mtime2 != mtime or atoms_changed):
                        try:
                                data, errors = self.loader2.load()
                                for fname in errors:
@@ -222,7 +224,8 @@ class WorldSet(EditablePackageSet):
                                data = {}
                        nonatoms = data.keys()
                        self._mtime2 = mtime
-               if self._atoms != atoms or self._nonatoms != nonatoms:
+                       atoms_changed = True
+               if atoms_changed:
                        self._setAtoms(atoms+nonatoms)
                
        def _ensure_dirs(self):