aboutsummaryrefslogtreecommitdiff
path: root/src/gui_project.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-05-17 11:27:35 +0200
committerThomas White <taw@physics.org>2021-05-17 11:27:35 +0200
commit191c653da29f5bd51251256d056239a3628daf5d (patch)
treea64949424dc999038948a80ceb26c997876272f3 /src/gui_project.c
parent680fa5f16ed2ff8a70fcb44e9920721287047f55 (diff)
GUI: Improve error handling for default_project
Diffstat (limited to 'src/gui_project.c')
-rw-r--r--src/gui_project.c13
1 files changed, 10 insertions, 3 deletions
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;
}