Prevent panic when 'options' value is nil #3947
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What?
It early returns when
options
isnil
, to prevent reaching the point wherejson.Marshal(v.Export())
withv == nil
.Why?
To prevent it from panicking.
In v0.52, that code was slightly different: https://github.com/grafana/k6/blob/v0.52.0/js/bundle.go#L176, and so the value received was
goja.valueUndefined
, which is enough for not panicking when callingjson.Marshal(v.Export())
.Since changes introduced in v0.53,
v
isnil
, and thus it panics.Additional comments
Another approach that I suggested was changing the behavior of
SourceTextModuleInstance.GetBindingValue
in Sobek, so it returnssobek.Undefined()
when no getter is found, but @mstoykov had doubts around the general correctness of that approach, so I guess the least intrusive way to prevent such panics here is this.Checklist
make lint
) and all checks pass.make tests
) and all tests pass.Related PR(s)/Issue(s)