mmap: only use mmap to read rev-branch-cache data if it is safe
Cf `is_mmap_safe` docstring.
--- a/mercurial/branchmap.py Wed Jul 03 12:26:57 2024 +0200
+++ b/mercurial/branchmap.py Wed Jul 03 12:31:21 2024 +0200
@@ -1213,11 +1213,12 @@
if self._names:
try:
- if repo.ui.configbool(b'storage', b'revbranchcache.mmap'):
- with repo.cachevfs(_rbcrevs) as fp:
+ usemmap = repo.ui.configbool(b'storage', b'revbranchcache.mmap')
+ with repo.cachevfs(_rbcrevs) as fp:
+ if usemmap and repo.cachevfs.is_mmap_safe(_rbcrevs):
data = util.buffer(util.mmapread(fp))
- else:
- data = repo.cachevfs.read(_rbcrevs)
+ else:
+ data = fp.read()
self._rbcrevs = rbcrevs(data)
except (IOError, OSError) as inst:
repo.ui.debug(