Show More
@@ -485,15 +485,24 def mmapread(fp, size=None, pre_populate | |||
|
485 | 485 | elif size is None: |
|
486 | 486 | size = 0 |
|
487 | 487 | fd = getattr(fp, 'fileno', lambda: fp)() |
|
488 | flags = mmap.MAP_PRIVATE | |
|
489 | bg_populate = hasattr(osutil, "background_mmap_populate") | |
|
490 | if pre_populate and not bg_populate: | |
|
491 | flags |= getattr(mmap, 'MAP_POPULATE', 0) | |
|
488 | ||
|
489 | if pycompat.iswindows: | |
|
490 | _mmap = lambda fd, size: mmap.mmap(fd, size, access=mmap.ACCESS_READ) | |
|
491 | else: | |
|
492 | flags = mmap.MAP_PRIVATE | |
|
493 | bg_populate = hasattr(osutil, "background_mmap_populate") | |
|
494 | ||
|
495 | if pre_populate and not bg_populate: | |
|
496 | flags |= getattr(mmap, 'MAP_POPULATE', 0) | |
|
497 | ||
|
498 | def _mmap(fd, size) -> mmap.mmap: | |
|
499 | m = mmap.mmap(fd, size, flags=flags, prot=mmap.PROT_READ) | |
|
500 | if pre_populate and bg_populate: | |
|
501 | osutil.background_mmap_populate(m) | |
|
502 | return m | |
|
503 | ||
|
492 | 504 | try: |
|
493 | m = mmap.mmap(fd, size, flags=flags, prot=mmap.PROT_READ) | |
|
494 | if pre_populate and bg_populate: | |
|
495 | osutil.background_mmap_populate(m) | |
|
496 | return m | |
|
505 | return _mmap(fd, size) | |
|
497 | 506 | except ValueError: |
|
498 | 507 | # Empty files cannot be mmapped, but mmapread should still work. Check |
|
499 | 508 | # if the file is empty, and if so, return an empty buffer. |
General Comments 0
You need to be logged in to leave comments.
Login now