aboutsummaryrefslogtreecommitdiffstats
path: root/libbe
diff options
context:
space:
mode:
authorW. Trevor King <wking@drexel.edu>2010-01-24 20:39:00 -0500
committerW. Trevor King <wking@drexel.edu>2010-01-24 20:39:00 -0500
commit7d01fa142b05149479e633525fc4d7ddfa2addf0 (patch)
tree991e00467e93d810685b62315be1c46f1a956db9 /libbe
parentbafb9fe5bb206422aae9baf3d083a035a072fa56 (diff)
downloadbugseverywhere-7d01fa142b05149479e633525fc4d7ddfa2addf0.tar.gz
Fixed #bea/8fc# : be crashes on outdated id-cache
Also explicitly avoid loading or saving settings for root comments.
Diffstat (limited to 'libbe')
-rw-r--r--libbe/comment.py4
-rw-r--r--libbe/storage/vcs/base.py6
2 files changed, 9 insertions, 1 deletions
diff --git a/libbe/comment.py b/libbe/comment.py
index 21118f0..f850042 100644
--- a/libbe/comment.py
+++ b/libbe/comment.py
@@ -590,6 +590,8 @@ class Comment (Tree, settings_object.SavedSettingsObject):
# methods for saving/loading/acessing settings and properties.
def load_settings(self, settings_mapfile=None):
+ if self.uuid == INVALID_UUID:
+ return
if settings_mapfile == None:
settings_mapfile = \
self.storage.get(self.id.storage("values"), default="\n")
@@ -601,6 +603,8 @@ class Comment (Tree, settings_object.SavedSettingsObject):
self._setup_saved_settings(settings)
def save_settings(self):
+ if self.uuid == INVALID_UUID:
+ return
mf = mapfile.generate(self._get_saved_settings())
self.storage.set(self.id.storage("values"), mf)
diff --git a/libbe/storage/vcs/base.py b/libbe/storage/vcs/base.py
index 7d4383f..7068e46 100644
--- a/libbe/storage/vcs/base.py
+++ b/libbe/storage/vcs/base.py
@@ -239,7 +239,11 @@ class CachedPathID (object):
else:
extra = fields[1:]
if uuid not in self._cache:
- raise InvalidID(uuid)
+ self.disconnect()
+ self.init()
+ self.connect()
+ if uuid not in self._cache:
+ raise InvalidID(uuid)
if relpath == True:
return os.path.join(self._cache[uuid], *extra)
return os.path.join(self._root, self._cache[uuid], *extra)