mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-04 07:15:29 -04:00
tiocswinsz: fix compilation error on e.g. ppc64
On some platforms, TIOCSWINSZ has a very large value, > 0x80000000. On some platforms, the `request` argument to `ioctl(3)` is an `int`. For platforms where both of the above is true, gcc will warn (and error out if compiled with `-Werror`) on: ioctl(fd, TIOCSWINSZ, ...) To silence this warning, we need to cast `TIOCSWINSZ` to an integer. However, doing this on platforms where `request` is an `unsigned long` will result in `TIOCSWINSZ` being sign-extended (and thus we end up with an invalid value). It seems that casting to `unsigned int` works in both cases; it silences the long -> int conversion warning, while also preserving the correct value in all cases.
This commit is contained in:
parent
d31139515f
commit
273f105af5
3 changed files with 5 additions and 2 deletions
|
|
@ -26,6 +26,9 @@
|
||||||
* XCursor shape in CSD corners when window is tiled.
|
* XCursor shape in CSD corners when window is tiled.
|
||||||
* Error handling when processing keyboard input (maybe
|
* Error handling when processing keyboard input (maybe
|
||||||
https://codeberg.org/dnkl/foot/issues/171).
|
https://codeberg.org/dnkl/foot/issues/171).
|
||||||
|
* Compilation error _"overflow in conversion from long 'unsigned int'
|
||||||
|
to 'int' changes value... "_ seen on platforms where the `request`
|
||||||
|
argument in `ioctl(3)` is an `int` (for example: linux/ppc64).
|
||||||
|
|
||||||
|
|
||||||
## 1.5.2
|
## 1.5.2
|
||||||
|
|
|
||||||
2
render.c
2
render.c
|
|
@ -2174,7 +2174,7 @@ maybe_resize(struct terminal *term, int width, int height, bool force)
|
||||||
term->margins.left, term->margins.right, term->margins.top, term->margins.bottom);
|
term->margins.left, term->margins.right, term->margins.top, term->margins.bottom);
|
||||||
|
|
||||||
/* Signal TIOCSWINSZ */
|
/* Signal TIOCSWINSZ */
|
||||||
if (term->ptmx >= 0 && ioctl(term->ptmx, TIOCSWINSZ,
|
if (term->ptmx >= 0 && ioctl(term->ptmx, (unsigned int)TIOCSWINSZ,
|
||||||
&(struct winsize){
|
&(struct winsize){
|
||||||
.ws_row = term->rows,
|
.ws_row = term->rows,
|
||||||
.ws_col = term->cols,
|
.ws_col = term->cols,
|
||||||
|
|
|
||||||
|
|
@ -883,7 +883,7 @@ term_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper,
|
||||||
goto close_fds;
|
goto close_fds;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ioctl(ptmx, TIOCSWINSZ,
|
if (ioctl(ptmx, (unsigned int)TIOCSWINSZ,
|
||||||
&(struct winsize){.ws_row = 24, .ws_col = 80}) < 0)
|
&(struct winsize){.ws_row = 24, .ws_col = 80}) < 0)
|
||||||
{
|
{
|
||||||
LOG_ERRNO("failed to set initial TIOCSWINSZ");
|
LOG_ERRNO("failed to set initial TIOCSWINSZ");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue