From 7d01fa142b05149479e633525fc4d7ddfa2addf0 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Sun, 24 Jan 2010 20:39:00 -0500 Subject: Fixed #bea/8fc# : be crashes on outdated id-cache Also explicitly avoid loading or saving settings for root comments. --- libbe/comment.py | 4 ++++ libbe/storage/vcs/base.py | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'libbe') 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) -- cgit