#! /bin/sh /usr/share/dpatch/dpatch-run ## 19_crash_when_writing_data_project.dpatch by Goedson Teixeira Paixao ## ## DP: Fixes a crash that occurred when the temporary ## DP: directory was not writable. @DPATCH@ diff -urNad gnomebaker-0.6.0~/src/dataproject.c gnomebaker-0.6.0/src/dataproject.c --- gnomebaker-0.6.0~/src/dataproject.c 2007-08-07 19:22:52.000000000 -0300 +++ gnomebaker-0.6.0/src/dataproject.c 2007-08-07 19:25:00.000000000 -0300 @@ -1623,19 +1623,36 @@ const GBTempFile *tmp_file = dataproject_build_paths_file(GTK_TREE_MODEL(data_project->dataproject_compilation_store)); - if(data_project->is_dvd) + if (tmp_file != NULL) { - if(data_project->msinfo != NULL) - burn_append_data_dvd(tmp_file->file_name, data_project->msinfo); + if(data_project->is_dvd) + { + if(data_project->msinfo != NULL) + burn_append_data_dvd(tmp_file->file_name, data_project->msinfo); + else + burn_create_data_dvd(tmp_file->file_name); + } + else if(data_project->msinfo != NULL) + burn_append_data_cd(tmp_file->file_name, data_project->msinfo); else - burn_create_data_dvd(tmp_file->file_name); + burn_create_data_cd(tmp_file->file_name); + /* TODO - we should delete the temp file here */ } - else if(data_project->msinfo != NULL) - burn_append_data_cd(tmp_file->file_name, data_project->msinfo); else - burn_create_data_cd(tmp_file->file_name); + { + /* TODO - Display an error message */ + gchar *temp_dir = preferences_get_string(GB_TEMP_DIR); + gchar *message = g_strdup_printf(_("Could not create temporary file. \n" + "Please make sure your temporary " + "directory [%s] is writable " + "and try again."), temp_dir); + gnomebaker_show_msg_dlg(NULL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, GTK_BUTTONS_NONE, message); + g_free(message); + g_free(temp_dir); + return; + } + - /* TODO - we should delete the temp file here */ }