@@ -187,16 +187,16 @@ like HDF5 (which can be used with memory-mapping).
187187"""
188188function mmap (io:: IO ,
189189 :: Type{Array{T,N}} = Vector{UInt8},
190- dims:: NTuple{N,Integer} = (div (filesize (io)- position (io),sizeof (T)),),
190+ dims:: NTuple{N,Integer} = (div (filesize (io)- position (io),Base . aligned_sizeof (T)),),
191191 offset:: Integer = position (io); grow:: Bool = true , shared:: Bool = true ) where {T,N}
192192 # check inputs
193193 isopen (io) || throw (ArgumentError (" $io must be open to mmap" ))
194194 isbitstype (T) || throw (ArgumentError (" unable to mmap $T ; must satisfy isbitstype(T) == true" ))
195195
196- len = sizeof (T)
196+ len = Base . aligned_sizeof (T)
197197 for l in dims
198198 len, overflow = Base. Checked. mul_with_overflow (promote (len, l)... )
199- overflow && throw (ArgumentError (" requested size prod($((sizeof (T) , dims... )) ) too large, would overflow typeof(size(T)) == $(typeof (len)) " ))
199+ overflow && throw (ArgumentError (" requested size prod($((len , dims... )) ) too large, would overflow typeof(size(T)) == $(typeof (len)) " ))
200200 end
201201 len >= 0 || throw (ArgumentError (" requested size must be ≥ 0, got $len " ))
202202 len == 0 && return Array {T} (undef, ntuple (x-> 0 ,Val (N)))
272272
273273mmap (file:: AbstractString ,
274274 :: Type{T} = Vector{UInt8},
275- dims:: NTuple{N,Integer} = (div (filesize (file),sizeof (eltype (T))),),
275+ dims:: NTuple{N,Integer} = (div (filesize (file),Base . aligned_sizeof (eltype (T))),),
276276 offset:: Integer = Int64 (0 ); grow:: Bool = true , shared:: Bool = true ) where {T<: Array ,N} =
277277 open (io-> mmap (io, T, dims, offset; grow= grow, shared= shared), file, isfile (file) ? " r" : " w+" ):: Array{eltype(T),N}
278278
0 commit comments