diff options
Diffstat (limited to 'Mailman/Archiver/HyperDatabase.py')
| -rw-r--r-- | Mailman/Archiver/HyperDatabase.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/Mailman/Archiver/HyperDatabase.py b/Mailman/Archiver/HyperDatabase.py index eeed8fde1..a5779a7c7 100644 --- a/Mailman/Archiver/HyperDatabase.py +++ b/Mailman/Archiver/HyperDatabase.py @@ -20,6 +20,7 @@ import os import marshal import string +import errno # # package/project modules @@ -58,12 +59,21 @@ class DumbBTree: self.lockfile = LockFile.LockFile(self.path + ".lock") self.lock() self.__dirty = 0 - if os.path.exists(path): - self.dict = marshal.load(open(path)) - self.__sort(dirty=1) + self.dict = {} + self.sorted = [] + try: + fp = open(path) + try: + self.dict = marshal.load(fp) + finally: + fp.close() + except IOError, e: + if e.errno <> errno.ENOENT: raise + pass + except EOFError: + pass else: - self.dict = {} - self.sorted = [] + self.__sort(dirty=1) def __sort(self, dirty=None): if self.__dirty == 1 or dirty: |
