chiark / gitweb /
detect a couple more out-of-memory conditions in CRS
authorstevenj <stevenj@alum.mit.edu>
Tue, 11 Sep 2007 22:42:53 +0000 (18:42 -0400)
committerstevenj <stevenj@alum.mit.edu>
Tue, 11 Sep 2007 22:42:53 +0000 (18:42 -0400)
darcs-hash:20070911224253-c8de0-8b324a9d0f66ad6e54fbf585353c002b2e4b4dce.gz

crs/crs.c

index e5c0ba8f8dd3de7c7551bf37fe1ab2b772d9431b..b07e5640f51c63d40b49936fb0eaec452c2435d2 100644 (file)
--- a/crs/crs.c
+++ b/crs/crs.c
@@ -172,7 +172,7 @@ static nlopt_result crs_init(crs_data *d, int n, const double *x,
      memcpy(d->ps + 1, x, sizeof(double) * n);
      d->ps[0] = f(n, x, NULL, f_data);
      stop->nevals++;
-     rb_tree_insert(&d->t, d->ps);
+     if (!rb_tree_insert(&d->t, d->ps)) return NLOPT_OUT_OF_MEMORY;
      if (d->ps[0] < stop->minf_max) return NLOPT_MINF_MAX_REACHED;
      if (nlopt_stop_evals(stop)) return NLOPT_MAXEVAL_REACHED;
      if (nlopt_stop_time(stop)) return NLOPT_MAXTIME_REACHED;
@@ -187,7 +187,7 @@ static nlopt_result crs_init(crs_data *d, int n, const double *x,
          }
          k[0] = f(n, k + 1, NULL, f_data);
          stop->nevals++;
-         rb_tree_insert(&d->t, k);
+         if (!rb_tree_insert(&d->t, k)) return NLOPT_OUT_OF_MEMORY;
          if (k[0] < stop->minf_max) return NLOPT_MINF_MAX_REACHED;
          if (nlopt_stop_evals(stop)) return NLOPT_MAXEVAL_REACHED;
          if (nlopt_stop_time(stop)) return NLOPT_MAXTIME_REACHED;