aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2019-01-28 14:54:37 +0100
committerThomas White <taw@physics.org>2019-01-28 14:55:32 +0100
commit6d68881f043921b3a859c5bff71d171ab4a7096b (patch)
tree9a72a9500d46c16bc01ee9a38b26bbbd85dee05f /src
parented0431ce89dd9be590d30501ed4fa96e5b3c33a5 (diff)
partialator: Display error message if minimiser can't be set up
Diffstat (limited to 'src')
-rw-r--r--src/post-refinement.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/post-refinement.c b/src/post-refinement.c
index 7c388f8d..44fe6b45 100644
--- a/src/post-refinement.c
+++ b/src/post-refinement.c
@@ -589,7 +589,7 @@ static gsl_multimin_fminimizer *setup_minimiser(Crystal *cr, const RefList *full
{
gsl_multimin_fminimizer *min;
int n_params = 0;
- int i;
+ int i, r;
/* The parameters to be refined */
priv->rv[n_params++] = GPARAM_ANG1;
@@ -622,11 +622,19 @@ static gsl_multimin_fminimizer *setup_minimiser(Crystal *cr, const RefList *full
n_params);
if ( min == NULL ) {
ERROR("Failed to allocate minimiser\n");
+ gsl_vector_free(priv->vals);
+ gsl_vector_free(priv->step);
+ gsl_vector_free(priv->initial);
return NULL;
}
- if ( gsl_multimin_fminimizer_set(min, &priv->f, priv->vals, priv->step) ) {
- ERROR("Failed to set up minimiser\n");
+ r = gsl_multimin_fminimizer_set(min, &priv->f, priv->vals, priv->step);
+ if ( r != 0 ) {
+ gsl_multimin_fminimizer_free(min);
+ gsl_vector_free(priv->vals);
+ gsl_vector_free(priv->step);
+ gsl_vector_free(priv->initial);
+ ERROR("Failed to set up minimiser: %s\n", gsl_strerror(r));
return NULL;
}