Fix a bug and add it to NEWS

This commit is contained in:
Gavin Howard 2020-06-30 13:47:49 -06:00
parent 15b5b4beef
commit d1f5f35559
Signed by: gavin
GPG Key ID: C08038BDF280D33E
2 changed files with 13 additions and 4 deletions

11
NEWS.md
View File

@ -2,16 +2,23 @@
## 3.0.4
This is a production release that fixes two bugs and improves manpages for
This is a production release that fixes four bugs and improves manpages for
FreeBSD. Because this release fixes bugs, **users and package maintainers should
update to this version as soon as possible**.
The first bug fix was in how output to `stdout` was handled in `SIGINT`. If a
The first bug fix in how output to `stdout` was handled in `SIGINT`. If a
`SIGINT` came in, the `stdout` buffer was not correctly flushed. In fact, a
clean-up function was not getting called. This release fixes that bug.
The second bug is in how `dc` handled input from `stdin`.
The third fixed bug was that `bc` and `dc` could `abort()` (in debug mode) when
receiving a `SIGTERM`.
The fourth bug fixed was that `bc` could leave extra items on the stack and
thus, not properly clean up some memory. (The memory would still get
`free()`'ed, but it would not be `free()`'ed when it could have been.)
The manpage improvement was done by switching from [ronn][20] to [Pandoc][21] to
generate manpages. Pandoc generates much cleaner manpages and doesn't leave
blank lines where they shouldn't be.

View File

@ -484,15 +484,17 @@ static void bc_history_enableRaw(BcHistory *h) {
static void bc_history_disableRaw(BcHistory *h) {
sig_atomic_t lock;
// Don't even check the return value as it's too late.
if (!h->rawMode) return;
BC_SIG_LOCK;
BC_SIG_TRYLOCK(lock);
if (BC_ERR(tcsetattr(STDIN_FILENO, TCSAFLUSH, &h->orig_termios) != -1))
h->rawMode = false;
BC_SIG_UNLOCK;
BC_SIG_TRYUNLOCK(lock);
}
/**