mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
parent
a5f8ed1b78
commit
e97e873b9e
2 changed files with 14 additions and 0 deletions
|
|
@ -123,6 +123,8 @@
|
|||
* Sixel: large image resizes (triggered by e.g. large repeat counts in
|
||||
`DECGRI`) are now truncated instead of ignored.
|
||||
* Sixel: a repeat count of 0 in `DECGRI` now emits a single sixel.
|
||||
* LIGHT ARC box drawing characters incorrectly rendered
|
||||
platforms (https://codeberg.org/dnkl/foot/issues/914).
|
||||
|
||||
|
||||
### Security
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#include "box-drawing.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <fenv.h>
|
||||
#include <errno.h>
|
||||
|
||||
#define LOG_MODULE "box-drawing"
|
||||
|
|
@ -1282,9 +1284,19 @@ draw_box_drawings_light_arc(struct buf *buf, wchar_t wc)
|
|||
const int num_samples = height * 16;
|
||||
|
||||
for (int i = 0; i < num_samples; i++) {
|
||||
errno = 0;
|
||||
feclearexcept(FE_ALL_EXCEPT);
|
||||
|
||||
double y = i / 16.;
|
||||
double x = sqrt(a2 * (1. - y * y / b2));
|
||||
|
||||
/* See math_error(7) */
|
||||
if (errno != 0 ||
|
||||
fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const int row = round(y);
|
||||
const int col = round(x);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue