Skip to content

Commit 4e7e711

Browse files
committed
Ensure serialize/deserialize work for isbits union arrays
1 parent 14ed376 commit 4e7e711

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/dump.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,8 @@ static void jl_serialize_value_(jl_serializer_state *s, jl_value_t *v, int as_li
570570
jl_serialize_value(s, jl_box_long(jl_array_dim(ar,i)));
571571
jl_serialize_value(s, jl_typeof(ar));
572572
if (!ar->flags.ptrarray) {
573-
size_t tot = jl_array_len(ar) * ar->elsize;
573+
size_t extra = jl_is_uniontype(jl_tparam0(jl_typeof(ar))) ? jl_array_len(ar) : 0;
574+
size_t tot = jl_array_len(ar) * ar->elsize + extra;
574575
ios_write(s->s, (char*)jl_array_data(ar), tot);
575576
}
576577
else {
@@ -1347,7 +1348,8 @@ static jl_value_t *jl_deserialize_value_array(jl_serializer_state *s, jl_value_t
13471348
jl_value_t *aty = jl_deserialize_value(s, &jl_astaggedvalue(a)->type);
13481349
jl_set_typeof(a, aty);
13491350
if (!a->flags.ptrarray) {
1350-
size_t tot = jl_array_len(a) * a->elsize;
1351+
size_t extra = jl_is_uniontype(jl_tparam0(aty)) ? jl_array_len(a) : 0;
1352+
size_t tot = jl_array_len(a) * a->elsize + extra;
13511353
ios_read(s->s, (char*)jl_array_data(a), tot);
13521354
}
13531355
else {

0 commit comments

Comments
 (0)