Skip to content

Commit d5ed2bb

Browse files
authored
fix incorrect array sizes on binary repack. (#23)
1 parent b483d36 commit d5ed2bb

File tree

1 file changed

+14
-17
lines changed

1 file changed

+14
-17
lines changed

suitesparse_graphblas/io/binary.py

+14-17
Original file line numberDiff line numberDiff line change
@@ -275,28 +275,25 @@ def binwrite(A, filename, comments=None, opener=Path.open):
275275
fwrite(buff(typesize, sizeof("size_t")))
276276
fwrite(buff(is_iso, sizeof("bool")))
277277

278+
Tsize = typesize[0]
279+
iso = is_iso[0]
280+
278281
if is_hyper:
279-
Ap_size[0] = (nvec[0] + 1) * Isize
280-
Ah_size[0] = nvec[0] * Isize
281-
Ai_size[0] = nvals[0] * Isize
282-
Ax_size[0] = typesize[0] if is_iso[0] else nvals[0] * typesize[0]
283-
fwrite(buff(Ap[0], Ap_size[0]))
284-
fwrite(buff(Ah[0], Ah_size[0]))
285-
fwrite(buff(Ai[0], Ai_size[0]))
282+
fwrite(buff(Ap[0], (nvec[0] + 1) * Isize))
283+
fwrite(buff(Ah[0], nvec[0] * Isize))
284+
fwrite(buff(Ai[0], nvals[0] * Isize))
285+
Axsize = Tsize if iso else nvals[0] * Tsize
286286
elif is_sparse:
287-
Ap_size[0] = (nvec[0] + 1) * Isize
288-
Ai_size[0] = nvals[0] * Isize
289-
Ax_size[0] = typesize[0] if is_iso[0] else nvals[0] * typesize[0]
290-
fwrite(buff(Ap[0], Ap_size[0]))
291-
fwrite(buff(Ai[0], Ai_size[0]))
287+
fwrite(buff(Ap[0], (nvec[0] + 1) * Isize))
288+
fwrite(buff(Ai[0], nvals[0] * Isize))
289+
Axsize = Tsize if iso else nvals[0] * Tsize
292290
elif is_bitmap:
293-
Ab_size[0] = nrows[0] * ncols[0] * ffi.sizeof("int8_t")
294-
Ax_size[0] = typesize[0] if is_iso[0] else nrows[0] * ncols[0] * typesize[0]
295-
fwrite(buff(Ab[0], Ab_size[0]))
291+
fwrite(buff(Ab[0], nrows[0] * ncols[0] * ffi.sizeof("int8_t")))
292+
Axsize = Tsize if iso else nrows[0] * ncols[0] * Tsize
296293
else:
297-
Ax_size[0] = typesize[0] if is_iso[0] else nrows[0] * ncols[0] * typesize[0]
294+
Axsize = Tsize if iso else nrows[0] * ncols[0] * Tsize
298295

299-
fwrite(buff(Ax[0], Ax_size[0]))
296+
fwrite(buff(Ax[0], Axsize))
300297

301298
if by_col and is_hyper:
302299
check_status(

0 commit comments

Comments
 (0)