Skip to content

Commit cf742ee

Browse files
committed
RF: np.memmap failures are silently absorbed, falling back to loading into memory
1 parent 183976d commit cf742ee

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

nibabel/gifti/parse_gifti_fast.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,21 @@ def read_data_block(darray, fname, data, mmap):
8787
ext_fname = op.join(op.dirname(fname), darray.ext_fname)
8888
if not op.exists(ext_fname):
8989
raise GiftiParseError('Cannot locate external file ' + ext_fname)
90+
# We either create a memmap, or load into memory
91+
newarr = None
9092
if mmap:
91-
newarr = np.memmap(ext_fname,
92-
dtype=dtype,
93-
mode=mmap,
94-
offset=darray.ext_offset,
95-
shape=tuple(darray.dims))
96-
else:
93+
try:
94+
newarr = np.memmap(ext_fname,
95+
dtype=dtype,
96+
mode=mmap,
97+
offset=darray.ext_offset,
98+
shape=tuple(darray.dims))
99+
# If the memmap fails, we ignore the error and load the data into
100+
# memory below
101+
except (AttributeError, TypeError, ValueError):
102+
pass
103+
# mmap=False or np.memmap failed
104+
if newarr is None:
97105
# We can replace this with a call to np.fromfile in numpy>=1.17,
98106
# as an "offset" paramter was added in that version.
99107
with open(ext_fname, 'rb') as f:

0 commit comments

Comments
 (0)