diff options
author | Thomas White <taw@physics.org> | 2011-05-25 17:51:04 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2012-02-22 15:27:27 +0100 |
commit | 42438f091125bbb0025ab27b97f7caedfd66447c (patch) | |
tree | 19398705a809cc78743c0fcb194f8f12ae68e8f2 /src | |
parent | 192b3acc937155a1851c7c8547d912dcdf5ff759 (diff) |
compare_hkl: Don't crash if scale factor can't be found
Diffstat (limited to 'src')
-rw-r--r-- | src/compare_hkl.c | 3 | ||||
-rw-r--r-- | src/statistics.c | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/compare_hkl.c b/src/compare_hkl.c index 1eae1849..4ab2dc70 100644 --- a/src/compare_hkl.c +++ b/src/compare_hkl.c @@ -21,6 +21,7 @@ #include <unistd.h> #include <getopt.h> #include <assert.h> +#include <gsl/gsl_errno.h> #include "utils.h" #include "statistics.h" @@ -440,6 +441,8 @@ int main(int argc, char *argv[]) } reflist_free(ratio); + gsl_set_error_handler_off(); + STATUS("%i reflections in '%s' had I < 3.0*sigma(I)\n", rej1, afile); STATUS("%i reflections in '%s' had I < 3.0*sigma(I)\n", rej2, bfile); diff --git a/src/statistics.c b/src/statistics.c index da9a06c6..2312c4a7 100644 --- a/src/statistics.c +++ b/src/statistics.c @@ -418,7 +418,10 @@ static double r_minimised(RefList *list1, double *arr2, double *scalep, int fom) double lo, up; /* Iterate */ - gsl_min_fminimizer_iterate(s); + if ( gsl_min_fminimizer_iterate(s) ) { + ERROR("Failed to find scale factor.\n"); + return NAN; + } /* Get the current estimate */ scale = gsl_min_fminimizer_x_minimum(s); |