Parcourir la source

Merge pull request #20 from Ernest0x/empty_segment_fix

Consider segment incomplete if segment file is empty or too small
Jonas Borgström il y a 11 ans
Parent
commit
57dfe372f6
1 fichiers modifiés avec 8 ajouts et 1 suppressions
  1. 8 1
      attic/repository.py

+ 8 - 1
attic/repository.py

@@ -1,5 +1,6 @@
 from configparser import RawConfigParser
 from binascii import hexlify
+import errno
 import os
 import re
 import shutil
@@ -314,7 +315,13 @@ class LoggedIO(object):
 
     def is_complete_segment(self, filename):
         with open(filename, 'rb') as fd:
-            fd.seek(-self.header_fmt.size, 2)
+            try:
+                fd.seek(-self.header_fmt.size, os.SEEK_END)
+            except Exception as e:
+                # return False if segment file is empty or too small
+                if e.errno == errno.EINVAL:
+                    return False
+                raise e
             return fd.read(self.header_fmt.size) == self.COMMIT
 
     def segment_filename(self, segment):