fix: return nil ptr on error and safeguard embedding nil ptrs in returns #11
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.
This is a rudimentary proposal for a fix of the issues outlined in #10:
*GenericSorter[E]with atempWriterfield ofnil(due to initialization error) should not be returned as a non-nil pointer.Consumers would assume a returned pointer to be a fully functional instance and run into panics (closed channels, nil-deref).
Instead,
nilshould be returned alongside the already closed channels and bubble up unmasked towards the last consumer.Safeguards were put in place so that internal consumers (of generics) do not mask
nilby embedding in return structs either.I would not consider this to be an API break as previously returned non-functional pointers were unusuable.
The proposed changes returning
nilaligns with common Go function return expectations in case of any errors.The changes pass the test suite, but feel free to merge/close/critique as required.
fixes #10