Bug #227 affects Windows where these values are zero, leading to sync
believing incorrectly that all local files are the same file.
... | ... |
@@ -36,6 +36,7 @@ class FileDict(SortedDict): |
36 | 36 |
return md5 |
37 | 37 |
|
38 | 38 |
def record_hardlink(self, relative_file, dev, inode, md5): |
39 |
+ if dev == 0 or inode == 0: return # Windows |
|
39 | 40 |
if dev not in self.hardlinks: |
40 | 41 |
self.hardlinks[dev] = dict() |
41 | 42 |
if inode not in self.hardlinks[dev]: |
... | ... |
@@ -5,6 +5,7 @@ class HashCache(object): |
5 | 5 |
self.inodes = dict() |
6 | 6 |
|
7 | 7 |
def add(self, dev, inode, mtime, size, md5): |
8 |
+ if dev == 0 or inode == 0: return # Windows |
|
8 | 9 |
if dev not in self.inodes: |
9 | 10 |
self.inodes[dev] = dict() |
10 | 11 |
if inode not in self.inodes[dev]: |
... | ... |
@@ -27,7 +28,10 @@ class HashCache(object): |
27 | 27 |
self.inodes[d][i][c]['purge'] = True |
28 | 28 |
|
29 | 29 |
def unmark_for_purge(self, dev, inode, mtime, size): |
30 |
- d = self.inodes[dev][inode][mtime] |
|
30 |
+ try: |
|
31 |
+ d = self.inodes[dev][inode][mtime] |
|
32 |
+ except: |
|
33 |
+ return |
|
31 | 34 |
if d['size'] == size and 'purge' in d: |
32 | 35 |
del self.inodes[dev][inode][mtime]['purge'] |
33 | 36 |
|