Skip to content

Variant getFieldByKey() on large objects silently fails if variant metadata is unsorted #3529

@steveloughran

Description

@steveloughran

Describe the bug, including details regarding any error messages, version, and platform.

Variant method getFieldByKey(String key) looks up a key by simple walk if key count < 32, binary search if above that. But the binary search assumes the metadata is sorted. This is optional according to the format spec; there's a bit in the variant to indicate whether or not a variant's metadata is unsorted

the test testUnsortedMetadataObject() does test unsorted support -but it only checks on a small enough object that binary search isn't involved

Component(s)

Core

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions