summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhoek <hoek@FreeBSD.org>1998-07-31 04:05:11 +0000
committerhoek <hoek@FreeBSD.org>1998-07-31 04:05:11 +0000
commit7abe80df5936086ad1c00a52c55868cbffdbe023 (patch)
tree93a496aaf93d87343523771065a6f9b9d17a79cb
parent0c01873b017eb8d89f9004ca2b49025ce75281df (diff)
downloadFreeBSD-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).
-rw-r--r--usr.bin/more/os.c3
-rw-r--r--usr.bin/more/signal.c2
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
/*
OpenPOWER on IntegriCloud