This repository has been archived by the owner. It is now read-only.
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.
NLopt's nlopt_add_*_mconstraint functions take a pointer to an array
of tolerances, one for each constraint; they copy that array.
rust-nlopt mistakenly passed a pointer to a single f64. As a result
NLopt would make out-of-bounds array accesses. Often the values read
would be negative, giving NLOPT_INVALID_ARGS.
There are two possible ways to fix this: 1. simply fix the rust-nlopt
API to take an appropriate slice; 2. make the existing functions copy
the single provided toleranc value and provide 2 new functions for
when the tolerances are not all the same.
I have chosen (1) because it is less work and because the declared
version of this crate is 0.x, so this would not break semver.
Two more arguments that could be made in support of this decision:
Anyone calling these functions is currently experiencing UB,
including (in my experience) random invalid argument errors. So
probably few people are using these entrypoints.
The new API corresponds to the NLopt API.
Signed-off-by: Ian Jackson ijackson@chiark.greenend.org.uk