Skip to content

Commit 62a010f

Browse files
fix: make remake_buffer work for array symbolics
1 parent 71408bb commit 62a010f

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/remake.jl

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,24 @@ function remake_buffer(sys, oldbuffer::AbstractArray, vals::Dict)
1919
if ArrayInterface.ismutable(oldbuffer) && !isa(oldbuffer, MArray)
2020
elT = Union{}
2121
for val in values(vals)
22-
elT = promote_type(elT, typeof(val))
22+
if val isa AbstractArray
23+
valT = eltype(val)
24+
else
25+
valT = typeof(val)
26+
end
27+
elT = promote_type(elT, valT)
2328
end
2429

2530
newbuffer = similar(oldbuffer, elT)
2631
copyto!(newbuffer, oldbuffer)
27-
setu(sys, collect(keys(vals)))(newbuffer, elT.(values(vals)))
32+
for (k, v) in vals
33+
if v isa AbstractArray
34+
v = elT.(v)
35+
else
36+
v = elT(v)
37+
end
38+
setu(sys, k)(newbuffer, v)
39+
end
2840
else
2941
mutbuffer = remake_buffer(sys, collect(oldbuffer), vals)
3042
newbuffer = similar_type(oldbuffer, eltype(mutbuffer))(mutbuffer)

0 commit comments

Comments
 (0)