speller: block the resizing signal also during an integrated spell check

Because somehow something goes wrong when SIGWINCHes are handled while
reading from a pipe.

This fixes https://savannah.gnu.org/bugs/?56011.

Bug existed since version 2.4.2, commit 75d64e67.
master
Benno Schulenberg 2019-03-30 19:31:42 +01:00
parent 19c82e6a43
commit b0c9809a2e
1 changed files with 5 additions and 1 deletions

View File

@ -2545,7 +2545,9 @@ const char *do_int_speller(const char *tempfile_name)
return _("Could not get size of pipe buffer");
}
/* Read in the returned spelling errors. */
/* Block SIGWINCHes while reading misspelled words from the pipe. */
block_sigwinch(TRUE);
totalread = 0;
buffersize = blocksize + 1;
misspellings = charalloc(buffersize);
@ -2561,6 +2563,8 @@ const char *do_int_speller(const char *tempfile_name)
*pointer = '\0';
close(uniq_fd[0]);
block_sigwinch(FALSE);
/* Do any replacements case sensitive, forward, and without regexes. */
SET(CASE_SENSITIVE);
UNSET(BACKWARDS_SEARCH);