Comments
Patch
@@ -463,7 +463,30 @@
# skip nonexistent file
self.entries = set()
return
- self.entries = set(decodedir(fp.read()).splitlines())
+
+ self.entries = []
+ #import pdb; pdb.set_trace()
+ totalsize = self.vfs.stat('fncache').st_size
+ chunksize = (10 ** 6) # 10 Megabytes
+ chunk = b''
+ chunksize = min(totalsize, chunksize)
+ totalsize -= chunksize
+ while chunksize:
+ chunk += fp.read(chunksize)
+ try:
+ p = chunk.rindex(b'\n')
+ self.entries.extend(decodedir(chunk[:p + 1]).splitlines())
+ chunk = chunk[p + 1:]
+ except ValueError:
+ # substring '\n' not found
+ pass
+ chunksize = min(totalsize, chunksize)
+ totalsize -= chunksize
+
+ if chunk:
+ self.entries.extend(decodedir(chunk[:p + 1]).splitlines())
+
+ self.entries = set(self.entries)
self._checkentries(fp)
fp.close()