Skip to content

Commit 45c89c4

Browse files
committed
Make copies of logp and num_produce in subset
1 parent 851630f commit 45c89c4

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/varinfo.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -339,19 +339,22 @@ end
339339

340340
function subset(varinfo::UntypedVarInfo, vns::AbstractVector{<:VarName})
341341
metadata = subset(varinfo.metadata, vns)
342-
return VarInfo(metadata, varinfo.logp, varinfo.num_produce)
342+
return VarInfo(metadata, deepcopy(varinfo.logp), deepcopy(varinfo.num_produce))
343343
end
344344

345345
function subset(varinfo::VectorVarInfo, vns::AbstractVector{<:VarName})
346346
metadata = subset(varinfo.metadata, vns)
347-
# TODO(mhauru) Should we make deepcopies new RefValues for the logp and num_produce?
348-
return VarInfo(metadata, varinfo.logp, varinfo.num_produce)
347+
return VarInfo(metadata, deepcopy(varinfo.logp), deepcopy(varinfo.num_produce))
349348
end
350349

351350
function subset(varinfo::TypedVarInfo, vns::AbstractVector{<:VarName{sym}}) where {sym}
352351
# If all the variables are using the same symbol, then we can just extract that field from the metadata.
353352
metadata = subset(getfield(varinfo.metadata, sym), vns)
354-
return VarInfo(NamedTuple{(sym,)}(tuple(metadata)), varinfo.logp, varinfo.num_produce)
353+
return VarInfo(
354+
NamedTuple{(sym,)}(tuple(metadata)),
355+
deepcopy(varinfo.logp),
356+
deepcopy(varinfo.num_produce),
357+
)
355358
end
356359

357360
function subset(varinfo::TypedVarInfo, vns::AbstractVector{<:VarName})
@@ -360,7 +363,9 @@ function subset(varinfo::TypedVarInfo, vns::AbstractVector{<:VarName})
360363
subset(getfield(varinfo.metadata, sym), filter(==(sym) getsym, vns))
361364
end
362365

363-
return VarInfo(NamedTuple{syms}(metadatas), varinfo.logp, varinfo.num_produce)
366+
return VarInfo(
367+
NamedTuple{syms}(metadatas), deepcopy(varinfo.logp), deepcopy(varinfo.num_produce)
368+
)
364369
end
365370

366371
function subset(metadata::Metadata, vns_given::AbstractVector{<:VarName})

0 commit comments

Comments
 (0)