diff options
author | Thomas White <taw@physics.org> | 2021-05-17 11:27:35 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2021-05-17 11:27:35 +0200 |
commit | 191c653da29f5bd51251256d056239a3628daf5d (patch) | |
tree | a64949424dc999038948a80ceb26c997876272f3 | |
parent | 680fa5f16ed2ff8a70fcb44e9920721287047f55 (diff) |
GUI: Improve error handling for default_project
-rw-r--r-- | src/crystfel_gui.c | 5 | ||||
-rw-r--r-- | src/gui_project.c | 13 | ||||
-rw-r--r-- | src/gui_project.h | 2 |
3 files changed, 15 insertions, 5 deletions
diff --git a/src/crystfel_gui.c b/src/crystfel_gui.c index 1246924b..28661064 100644 --- a/src/crystfel_gui.c +++ b/src/crystfel_gui.c @@ -771,7 +771,10 @@ int main(int argc, char *argv[]) gtk_init(&argc, &argv); - default_project(&proj); + if ( default_project(&proj) ) { + ERROR("Failed to set up default project\n"); + return 1; + } proj.image_info = NULL; diff --git a/src/gui_project.c b/src/gui_project.c index 789f2219..f2efc71b 100644 --- a/src/gui_project.c +++ b/src/gui_project.c @@ -818,7 +818,10 @@ int load_project(struct crystfelproject *proj) fh = fopen("crystfel.project", "r"); if ( fh == NULL ) return 1; - default_project(proj); + if ( default_project(proj) ) { + ERROR("Failed to make default project when loading.\n"); + return 1; + } read_parameters(fh, proj); read_results(fh, proj); @@ -1085,7 +1088,7 @@ int save_project(struct crystfelproject *proj) } -void default_project(struct crystfelproject *proj) +int default_project(struct crystfelproject *proj) { proj->unsaved = 0; proj->geom_filename = NULL; @@ -1115,18 +1118,20 @@ void default_project(struct crystfelproject *proj) proj->ambi_backend_selected = 0; proj->n_backends = 0; proj->backends = malloc(2*sizeof(struct crystfel_backend)); - /* FIXME: Crappy error handling */ if ( proj->backends == NULL ) { ERROR("Couldn't allocate space for backends\n"); + return 1; } if ( make_local_backend(&proj->backends[proj->n_backends++]) ) { ERROR("Local backend setup failed\n"); + return 1; } #ifdef HAVE_SLURM if ( make_slurm_backend(&proj->backends[proj->n_backends++]) ) { ERROR("SLURM backend setup failed\n"); + return 1; } #endif @@ -1226,6 +1231,8 @@ void default_project(struct crystfelproject *proj) /* NB Export options are currently not saved (because I'm lazy) */ proj->export_res_min = INFINITY; /* Angstroms */ proj->export_res_max = 0.0; /* Angstroms */ + + return 0; } diff --git a/src/gui_project.h b/src/gui_project.h index c75f36e2..2617c2d8 100644 --- a/src/gui_project.h +++ b/src/gui_project.h @@ -343,7 +343,7 @@ extern int match_filename(const char *fn, enum match_type_id mt); extern int load_project(struct crystfelproject *proj); -extern void default_project(struct crystfelproject *proj); +extern int default_project(struct crystfelproject *proj); extern int save_project(struct crystfelproject *proj); |