diff options
author | hoek <hoek@FreeBSD.org> | 1998-07-31 04:05:11 +0000 |
---|---|---|
committer | hoek <hoek@FreeBSD.org> | 1998-07-31 04:05:11 +0000 |
commit | 7abe80df5936086ad1c00a52c55868cbffdbe023 (patch) | |
tree | 93a496aaf93d87343523771065a6f9b9d17a79cb /usr.bin | |
parent | 0c01873b017eb8d89f9004ca2b49025ce75281df (diff) | |
download | FreeBSD-src-7abe80df5936086ad1c00a52c55868cbffdbe023.zip FreeBSD-src-7abe80df5936086ad1c00a52c55868cbffdbe023.tar.gz |
Fix coredump when two signals are sent in rapid succession.
PR: bin/5721
Submitted by: Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de>
Also, add "volatile" to a variable modified by signal handlers (coincidentally,
the same variable involved in the above fix, although this isn't related
to the reported problem).
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/more/os.c | 3 | ||||
-rw-r--r-- | usr.bin/more/signal.c | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/usr.bin/more/os.c b/usr.bin/more/os.c index da22d0d..208494d 100644 --- a/usr.bin/more/os.c +++ b/usr.bin/more/os.c @@ -58,7 +58,7 @@ static char sccsid[] = "@(#)os.c 8.1 (Berkeley) 6/6/93"; #include <less.h> #include "pathnames.h" -int reading; +volatile int reading; extern int screen_trashed; @@ -182,6 +182,7 @@ iread(fd, buf, len) intread() { + reading = 0; (void)sigsetmask(0L); longjmp(read_label, 1); } diff --git a/usr.bin/more/signal.c b/usr.bin/more/signal.c index 67d7e51..aa9d47f 100644 --- a/usr.bin/more/signal.c +++ b/usr.bin/more/signal.c @@ -66,7 +66,7 @@ extern int screen_trashed; extern int lnloop; extern int linenums; extern int scroll; -extern int reading; +extern volatile int reading; #ifdef SIGTSTP /* |