Search before asking

  • [x] I searched in the issues and found nothing similar.

Describe the bug

The EnumSetDeserializer implementation has problems with calls to _nullProvider and handling of _skipNullValues that are not consistent. This Issue was submitted based on the following comment https://github.com/FasterXML/jackson-databind/issues/5165#issuecomment-2973787646

Version Information

2.20.0

Reproduction

No response

Expected behavior

It is suggested that the flow should be modified as follows

flowchart TD
    A[Is JsonToken.VALUE_NULL?] -->|Yes| B[Is _skipNullValues true?]
    B -->|Yes| C[Skip]
    B -->|No| D[value = _nullProvider.getNullValue]

    A -->|No| E[value = _enumDeserializer.deserialize]
    E --> F{Is value null?}
    F -->|Yes| D
    F -->|No| M[Use value]

    D --> I{Is value null?}

    I -->|Yes| J[Is _skipNullValues true?]
    J -->|Yes| K[skip value]
    J -->|No| L[Throw error]

    I -->|No| M

Additional context

No response

Comment From: JooHyukKim

Good finding @k163377 ! If needed we may also want to consider refactor and cause behavior change in 3.x and backport as needed?