diff -up xsane-0.997/src/xsane-back-gtk.c.no-file-selected xsane-0.997/src/xsane-back-gtk.c --- xsane-0.997/src/xsane-back-gtk.c.no-file-selected 2002-10-02 13:05:52.000000000 +0200 +++ xsane-0.997/src/xsane-back-gtk.c 2010-06-28 10:49:29.302391248 +0200 @@ -1501,12 +1501,19 @@ int xsane_back_gtk_get_filename(const ch #endif chooser_filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filechooser)); - strncpy(filename, chooser_filename, max_len - 1); - g_free(chooser_filename); + if (chooser_filename) + { + strncpy(filename, chooser_filename, max_len - 1); + g_free(chooser_filename); - filename[max_len - 1] = '\0'; + filename[max_len - 1] = '\0'; - ok = TRUE; + ok = TRUE; + } + else + { + ok = FALSE; + } } gtk_widget_destroy(filechooser); diff -up xsane-0.997/src/xsane-front-gtk.c.no-file-selected xsane-0.997/src/xsane-front-gtk.c --- xsane-0.997/src/xsane-front-gtk.c.no-file-selected 2002-10-02 13:04:33.000000000 +0200 +++ xsane-0.997/src/xsane-front-gtk.c 2010-06-28 10:46:31.025142803 +0200 @@ -1339,7 +1339,11 @@ static void xsane_browse_filename_callba snprintf(windowname, sizeof(windowname), "%s %s %s", xsane.prog_name, WINDOW_OUTPUT_FILENAME, xsane.device_text); umask((mode_t) preferences.directory_umask); /* define new file permissions */ - xsane_back_gtk_get_filename(windowname, filename, sizeof(filename), filename, &preferences.filetype, &preferences.cms_function, XSANE_FILE_CHOOSER_ACTION_SELECT_SAVE, show_extra_widgets, XSANE_FILE_FILTER_ALL | XSANE_FILE_FILTER_IMAGES, XSANE_FILE_FILTER_IMAGES); + if (!xsane_back_gtk_get_filename(windowname, filename, sizeof(filename), filename, &preferences.filetype, &preferences.cms_function, XSANE_FILE_CHOOSER_ACTION_SELECT_SAVE, show_extra_widgets, XSANE_FILE_FILTER_ALL | XSANE_FILE_FILTER_IMAGES, XSANE_FILE_FILTER_IMAGES)) + { + xsane_set_sensitivity(TRUE); + return; + } umask(XSANE_DEFAULT_UMASK); /* define new file permissions */ if (preferences.filename)