Skip to content

Commit ac9592b

Browse files
authored
cdirect: check for infinite values (#640)
Closes #639
1 parent 35df45c commit ac9592b

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

src/algs/cdirect/cdirect.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,10 @@ static nlopt_result divide_rect(double *rdiv, params *p)
200200
rnew[3 + isort[i]] += w[isort[i]] * (2*k-1);
201201
rnew[1] = fv[2*isort[i]+k];
202202
rnew[2] = p->age++;
203+
if (!isfinite(rnew[1])) {
204+
free(rnew);
205+
return NLOPT_FAILURE;
206+
}
203207
if (!nlopt_rb_tree_insert(&p->rtree, rnew)) {
204208
free(rnew);
205209
return NLOPT_OUT_OF_MEMORY;
@@ -233,6 +237,10 @@ static nlopt_result divide_rect(double *rdiv, params *p)
233237
rnew[3 + i] += w[i] * (2*k-1);
234238
FUNCTION_EVAL(rnew[1], rnew + 3, p, rnew);
235239
rnew[2] = p->age++;
240+
if (!isfinite(rnew[1])) {
241+
free(rnew);
242+
return NLOPT_FAILURE;
243+
}
236244
if (!nlopt_rb_tree_insert(&p->rtree, rnew)) {
237245
free(rnew);
238246
return NLOPT_OUT_OF_MEMORY;

0 commit comments

Comments
 (0)