Skip to content

Stupid logic error in build_stat #184

Open
@simoncozens

Description

Found while porting. I can't think of a way to trigger this, but it just looks wrong:

for axis, fallback in fallbacks_in_names:
if axis in seen_axes:
continue
a = {
"tag": axis,
"name": axis_registry[axis].display_name,
"values": [{"name": fallback.name, "value": fallback.value, "flags": 0x0}],
}
if axis in LINKED_VALUES and fallback.value in LINKED_VALUES[axis]:
linked_value = LINKED_VALUES[axis][fallback.value]
a["values"][0]["linkedValue"] = linked_value
res.append(a)
for axis, fallback in fallbacks_in_siblings:
if axis in seen_axes:
continue
elided_value = axis_registry[axis].default_value
elided_fallback = axis_registry.fallback_for_value(axis, elided_value)
a = {
"tag": axis,
"name": axis_registry[axis].display_name,

Suppose an axis is in fallbacks_in_names but not in fallbacks_in_fvar; it gets added during the first loop above. But suppose it is also in fallbacks_in_siblings. Because we didn't do a seen_axes.add(axis) during the fallbacks_in_names loop, it gets added twice.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions