Skip to content

Commit ec45c33

Browse files
committed
fix bug in parsing ranges from metadata/VNV
1 parent 8f43f2e commit ec45c33

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

src/fastldf.jl

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -391,16 +391,13 @@ function get_ranges_and_linked(varinfo::VarInfo{<:NamedTuple{syms}}) where {syms
391391
offset = 1
392392
for sym in syms
393393
md = varinfo.metadata[sym]
394-
this_md_iden, this_md_others, new_offset = get_ranges_and_linked_metadata(
395-
md, offset
396-
)
394+
this_md_iden, this_md_others, offset = get_ranges_and_linked_metadata(md, offset)
397395
all_iden_ranges = merge(all_iden_ranges, this_md_iden)
398396
all_ranges = merge(all_ranges, this_md_others)
399-
offset = new_offset
400397
end
401398
return all_iden_ranges, all_ranges
402399
end
403-
function get_ranges_and_linked(varinfo::VarInfo{<:Metadata})
400+
function get_ranges_and_linked(varinfo::VarInfo{<:Union{Metadata,VarNamedVector}})
404401
all_iden, all_others, _ = get_ranges_and_linked_metadata(varinfo.metadata, 1)
405402
return all_iden, all_others
406403
end
@@ -409,9 +406,8 @@ function get_ranges_and_linked_metadata(md::Metadata, start_offset::Int)
409406
all_ranges = Dict{VarName,RangeAndLinked}()
410407
offset = start_offset
411408
for (vn, idx) in md.idcs
412-
len = length(md.ranges[idx])
413409
is_linked = md.is_transformed[idx]
414-
range = offset:(offset + len - 1)
410+
range = md.ranges[idx] .+ (start_offset - 1)
415411
if AbstractPPL.getoptic(vn) === identity
416412
all_iden_ranges = merge(
417413
all_iden_ranges,
@@ -420,7 +416,7 @@ function get_ranges_and_linked_metadata(md::Metadata, start_offset::Int)
420416
else
421417
all_ranges[vn] = RangeAndLinked(range, is_linked)
422418
end
423-
offset += len
419+
offset += length(range)
424420
end
425421
return all_iden_ranges, all_ranges, offset
426422
end
@@ -429,9 +425,8 @@ function get_ranges_and_linked_metadata(vnv::VarNamedVector, start_offset::Int)
429425
all_ranges = Dict{VarName,RangeAndLinked}()
430426
offset = start_offset
431427
for (vn, idx) in vnv.varname_to_index
432-
len = length(vnv.ranges[idx])
433428
is_linked = vnv.is_unconstrained[idx]
434-
range = offset:(offset + len - 1)
429+
range = vnv.ranges[idx] .+ (start_offset - 1)
435430
if AbstractPPL.getoptic(vn) === identity
436431
all_iden_ranges = merge(
437432
all_iden_ranges,
@@ -440,7 +435,7 @@ function get_ranges_and_linked_metadata(vnv::VarNamedVector, start_offset::Int)
440435
else
441436
all_ranges[vn] = RangeAndLinked(range, is_linked)
442437
end
443-
offset += len
438+
offset += length(range)
444439
end
445440
return all_iden_ranges, all_ranges, offset
446441
end

0 commit comments

Comments
 (0)