aboutsummaryrefslogtreecommitdiff
path: root/src/compose.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-11-04 09:51:35 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-11-04 09:51:35 +0000
commit9b171679a3b03c25183b40ada5fcee8bb83ed393 (patch)
tree1191833c971205bd4d17ff8adc3b39e07bd6d797 /src/compose.c
parentc523be19954ab6bcb4b524c6f6d17fb744aca242 (diff)
fixed a crash when the external editor was terminated while opening confirmation dialog.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@715 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/compose.c')
-rw-r--r--src/compose.c52
1 files changed, 27 insertions, 25 deletions
diff --git a/src/compose.c b/src/compose.c
index e18e0a71..f297a47a 100644
--- a/src/compose.c
+++ b/src/compose.c
@@ -5202,37 +5202,39 @@ static gboolean compose_ext_editor_kill(Compose *compose)
GTK_STOCK_YES, GTK_STOCK_NO, NULL);
g_free(msg);
- if (val == G_ALERTDEFAULT) {
+ if (val != G_ALERTDEFAULT)
+ return FALSE;
+ }
+
+ if (compose->exteditor_tag != 0) {
+ g_source_remove(compose->exteditor_tag);
+ compose->exteditor_tag = 0;
+ }
+
+ if (compose->exteditor_pid != 0) {
#ifdef G_OS_WIN32
- if (TerminateProcess(compose->exteditor_pid, 1) == 0)
- g_warning("TerminateProcess() failed: %d\n",
- GetLastError());
+ if (TerminateProcess(compose->exteditor_pid, 1) == 0)
+ g_warning("TerminateProcess() failed: %d\n",
+ GetLastError());
#else
- if (kill(compose->exteditor_pid, SIGTERM) < 0)
- perror("kill");
+ if (kill(compose->exteditor_pid, SIGTERM) < 0)
+ perror("kill");
#endif
+ g_message("Terminated process group id: %d\n",
+ compose->exteditor_pid);
+ g_message("Temporary file: %s\n",
+ compose->exteditor_file);
+ compose->exteditor_pid = 0;
+ }
- g_message("Terminated process group id: %d",
- compose->exteditor_pid);
- g_message("Temporary file: %s",
- compose->exteditor_file);
-
- while (compose->exteditor_pid != 0)
- gtk_main_iteration();
- } else
- return FALSE;
- } else if (compose->exteditor_tag != 0) {
- g_source_remove(compose->exteditor_tag);
- compose->exteditor_tag = 0;
- if (compose->exteditor_file) {
- g_unlink(compose->exteditor_file);
- g_free(compose->exteditor_file);
- compose->exteditor_file = NULL;
- }
- compose->exteditor_pid = 0;
- compose_set_ext_editor_sensitive(compose, TRUE);
+ if (compose->exteditor_file) {
+ g_unlink(compose->exteditor_file);
+ g_free(compose->exteditor_file);
+ compose->exteditor_file = NULL;
}
+ compose_set_ext_editor_sensitive(compose, TRUE);
+
return TRUE;
}