]> git.wh0rd.org Git - nano.git/commitdiff
simplify the previous fix
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 26 Jul 2005 00:06:34 +0000 (00:06 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 26 Jul 2005 00:06:34 +0000 (00:06 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2936 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/text.c

index 0d3828c2c53ecadef147e204d12128711dee0216..e239c0e8de6225eb7c4a6ecfa051959b0201a7f4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -173,10 +173,8 @@ CVS code -
          no longer needed, and make the error message more similar to
          what the internal spell checker returns under the same
          circumstances. (DLR)
-       - Set the SIGWINCH handler back to the default just before
-         running the alternate spell checker, so that the alternate
-         spell checker can handle them, and set it back afterwards.
-         (DLR)
+       - Block any pending SIGWINCHes while the alternate spell checker
+         is running, so that it can handle them. (DLR)
   do_spell()
        - When displaying an error message from do_(int|alt)_speller(),
          don't display the error message corresponding to errno if
index 1f83bb1cd131f2ab66bc09b42c3486db2f188570..174bd9f307f708f240aa173741f8719e2f88c071 100644 (file)
@@ -1846,8 +1846,6 @@ const char *do_alt_speller(char *tempfile_name)
     size_t totsize_save = openfile->totsize;
        /* Our saved value of totsize, used when we spell-check a marked
         * selection. */
-    struct sigaction newaction, oldaction;
-       /* Original and temporary handlers for SIGWINCH. */
 
     if (old_mark_set) {
        /* If the mark is on, save the number of the line it starts on,
@@ -1874,13 +1872,6 @@ const char *do_alt_speller(char *tempfile_name)
     }
     spellargs[arglen - 2] = tempfile_name;
 
-    /* Save the original SIGWINCH handler, and set the SIGWINCH handler
-     * back to the default, so that the alternate spell checker can
-     * handle a SIGWINCH its own way. */
-    sigaction(SIGWINCH, NULL, &newaction);
-    newaction.sa_handler = SIG_DFL;
-    sigaction(SIGWINCH, &newaction, &oldaction);
-
     /* Start a new process for the alternate speller. */
     if ((pid_spell = fork()) == 0) {
        /* Start alternate spell program; we are using PATH. */
@@ -1894,11 +1885,19 @@ const char *do_alt_speller(char *tempfile_name)
     if (pid_spell < 0)
        return _("Could not fork");
 
-    /* Wait for alternate speller to complete. */
+#ifndef NANO_SMALL
+    /* Don't handle a pending SIGWINCH until the alternate spell checker
+     * is finished. */
+    allow_pending_sigwinch(FALSE);
+#endif
+
+    /* Wait for the alternate spell checker to finish. */
     wait(&alt_spell_status);
 
-    /* Set the SIGWINCH handler back to the original. */
-    sigaction(SIGWINCH, &oldaction, NULL);
+#ifndef NANO_SMALL
+    /* Handle a pending SIGWINCH again. */
+    allow_pending_sigwinch(TRUE);
+#endif
 
     refresh();