Control: tags -1 + patch
On 2023-12-10 20:19 +0100, Santiago Vila wrote:
> Package: src:ydpdict
> Version: 1.0.4-1
> Severity: serious
> Tags: ftbfs
>
> Dear maintainer:
>
> During a rebuild of all packages in unstable, your package failed to build:
>
> --------------------------------------------------------------------------------
> [...]
> gcc -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2
> -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong
> -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
> -DHAVE_CONFIG_H -DSYSCONFDIR=\"/etc\" -g -O2
> -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong
> -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
> -DHAVE_CONFIG_H -c -o ydpdict-ydpdict.o `test -f 'ydpdict.c' || echo
> './'`ydpdict.c
> ydpdict.c: In function ‘check_size’:
> ydpdict.c:324:22: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 324 | newx = stdscr->_maxx + 1;
> | ^~
> ydpdict.c:325:22: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 325 | newy = stdscr->_maxy + 1;
> | ^~
> ydpdict.c: In function ‘main’:
> ydpdict.c:855:27: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> | ^~
> ydpdict.c:862:88: note: in expansion of macro ‘__MOUSE_IN’
> 862 | if (m_event.bstate &
> BUTTON1_DOUBLE_CLICKED && __MOUSE_IN(window_def, m_event, -2, 1, -3, 2)) {
> |
> ^~~~~~~~~~
> ydpdict.c:855:67: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> | ^~
> ydpdict.c:862:88: note: in expansion of macro ‘__MOUSE_IN’
> 862 | if (m_event.bstate &
> BUTTON1_DOUBLE_CLICKED && __MOUSE_IN(window_def, m_event, -2, 1, -3, 2)) {
> |
> ^~~~~~~~~~
> ydpdict.c:855:83: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> |
> ^~
> ydpdict.c:862:88: note: in expansion of macro ‘__MOUSE_IN’
> 862 | if (m_event.bstate &
> BUTTON1_DOUBLE_CLICKED && __MOUSE_IN(window_def, m_event, -2, 1, -3, 2)) {
> |
> ^~~~~~~~~~
> ydpdict.c:856:27: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> | ^~
> ydpdict.c:862:88: note: in expansion of macro ‘__MOUSE_IN’
> 862 | if (m_event.bstate &
> BUTTON1_DOUBLE_CLICKED && __MOUSE_IN(window_def, m_event, -2, 1, -3, 2)) {
> |
> ^~~~~~~~~~
> ydpdict.c:856:67: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> | ^~
> ydpdict.c:862:88: note: in expansion of macro ‘__MOUSE_IN’
> 862 | if (m_event.bstate &
> BUTTON1_DOUBLE_CLICKED && __MOUSE_IN(window_def, m_event, -2, 1, -3, 2)) {
> |
> ^~~~~~~~~~
> ydpdict.c:856:83: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> |
> ^~
> ydpdict.c:862:88: note: in expansion of macro ‘__MOUSE_IN’
> 862 | if (m_event.bstate &
> BUTTON1_DOUBLE_CLICKED && __MOUSE_IN(window_def, m_event, -2, 1, -3, 2)) {
> |
> ^~~~~~~~~~
> ydpdict.c:887:104: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 887 | } while
> ((iswalpha(ch) || ch == L'-') && x < window_def->_maxx);
> |
> ^~
> ydpdict.c:855:27: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> | ^~
> ydpdict.c:905:53: note: in expansion of macro ‘__MOUSE_IN’
> 905 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -1, 1) && m_event.y > 2) {
> | ^~~~~~~~~~
> ydpdict.c:855:67: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> | ^~
> ydpdict.c:905:53: note: in expansion of macro ‘__MOUSE_IN’
> 905 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -1, 1) && m_event.y > 2) {
> | ^~~~~~~~~~
> ydpdict.c:855:83: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> |
> ^~
> ydpdict.c:905:53: note: in expansion of macro ‘__MOUSE_IN’
> 905 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -1, 1) && m_event.y > 2) {
> | ^~~~~~~~~~
> ydpdict.c:856:27: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> | ^~
> ydpdict.c:905:53: note: in expansion of macro ‘__MOUSE_IN’
> 905 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -1, 1) && m_event.y > 2) {
> | ^~~~~~~~~~
> ydpdict.c:856:67: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> | ^~
> ydpdict.c:905:53: note: in expansion of macro ‘__MOUSE_IN’
> 905 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -1, 1) && m_event.y > 2) {
> | ^~~~~~~~~~
> ydpdict.c:856:83: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> |
> ^~
> ydpdict.c:905:53: note: in expansion of macro ‘__MOUSE_IN’
> 905 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -1, 1) && m_event.y > 2) {
> | ^~~~~~~~~~
> ydpdict.c:855:27: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> | ^~
> ydpdict.c:934:53: note: in expansion of macro ‘__MOUSE_IN’
> 934 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -3, 2) && focus) {
> | ^~~~~~~~~~
> ydpdict.c:855:67: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> | ^~
> ydpdict.c:934:53: note: in expansion of macro ‘__MOUSE_IN’
> 934 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -3, 2) && focus) {
> | ^~~~~~~~~~
> ydpdict.c:855:83: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> |
> ^~
> ydpdict.c:934:53: note: in expansion of macro ‘__MOUSE_IN’
> 934 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -3, 2) && focus) {
> | ^~~~~~~~~~
> ydpdict.c:856:27: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> | ^~
> ydpdict.c:934:53: note: in expansion of macro ‘__MOUSE_IN’
> 934 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -3, 2) && focus) {
> | ^~~~~~~~~~
> ydpdict.c:856:67: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> | ^~
> ydpdict.c:934:53: note: in expansion of macro ‘__MOUSE_IN’
> 934 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -3, 2) && focus) {
> | ^~~~~~~~~~
> ydpdict.c:856:83: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> |
> ^~
> ydpdict.c:934:53: note: in expansion of macro ‘__MOUSE_IN’
> 934 | if
> (__MOUSE_IN(window_word, m_event, -2, 1, -3, 2) && focus) {
> | ^~~~~~~~~~
> ydpdict.c:855:27: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> | ^~
> ydpdict.c:940:53: note: in expansion of macro ‘__MOUSE_IN’
> 940 | if
> (__MOUSE_IN(window_def, m_event, -2, 1, -3, 2) && !focus)
> | ^~~~~~~~~~
> ydpdict.c:855:67: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> | ^~
> ydpdict.c:940:53: note: in expansion of macro ‘__MOUSE_IN’
> 940 | if
> (__MOUSE_IN(window_def, m_event, -2, 1, -3, 2) && !focus)
> | ^~~~~~~~~~
> ydpdict.c:855:83: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 855 | event.y > (window->_begy + correct1) && event.y <
> (window->_begy + window->_maxy + correct2) &&\
> |
> ^~
> ydpdict.c:940:53: note: in expansion of macro ‘__MOUSE_IN’
> 940 | if
> (__MOUSE_IN(window_def, m_event, -2, 1, -3, 2) && !focus)
> | ^~~~~~~~~~
> ydpdict.c:856:27: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> | ^~
> ydpdict.c:940:53: note: in expansion of macro ‘__MOUSE_IN’
> 940 | if
> (__MOUSE_IN(window_def, m_event, -2, 1, -3, 2) && !focus)
> | ^~~~~~~~~~
> ydpdict.c:856:67: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> | ^~
> ydpdict.c:940:53: note: in expansion of macro ‘__MOUSE_IN’
> 940 | if
> (__MOUSE_IN(window_def, m_event, -2, 1, -3, 2) && !focus)
> | ^~~~~~~~~~
> ydpdict.c:856:83: error: invalid use of incomplete typedef ‘WINDOW’ {aka
> ‘struct _win_st’}
> 856 | event.x > (window->_begx + correct3) && event.x <
> (window->_begx + window->_maxx + correct4))
> |
> ^~
> ydpdict.c:940:53: note: in expansion of macro ‘__MOUSE_IN’
> 940 | if
> (__MOUSE_IN(window_def, m_event, -2, 1, -3, 2) && !focus)
> | ^~~~~~~~~~
The attached patch should fix these errors, but I have only tested that
the package builds, not if it works. Note that getmaxx(window) returns
window->_maxx + 1, and similar for getmaxy.
Cheers,
Sven
From a81cab602f5844fd9ca8efc2d391d0e1d3a85822 Mon Sep 17 00:00:00 2001
From: Sven Joachim <[email protected]>
Date: Sun, 17 Dec 2023 18:07:50 +0100
Subject: [PATCH] Avoid accessing internal ncurses structures
Since ncurses patchlevel 20231021 the WINDOW structure is opaque, its
members cannot be addressed directly. Use the functions ncurses
provides for this purpose instead.
---
src/ydpdict.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/ydpdict.c b/src/ydpdict.c
index 7a6a366..97d313e 100644
--- a/src/ydpdict.c
+++ b/src/ydpdict.c
@@ -321,8 +321,8 @@ void check_size(void)
{
int newx, newy, fake = 0, diff;
- newx = stdscr->_maxx + 1;
- newy = stdscr->_maxy + 1;
+ newx = getmaxx(stdscr);
+ newy = getmaxy(stdscr);
/* Minimum size */
if (newx < 29)
@@ -853,8 +853,8 @@ int main(int argc, char **argv)
switch (ch) {
#define __MOUSE_IN(window, event, correct1, correct2, correct3, correct4) (\
- event.y > (window->_begy + correct1) && event.y < (window->_begy + window->_maxy + correct2) &&\
- event.x > (window->_begx + correct3) && event.x < (window->_begx + window->_maxx + correct4))
+ event.y > (getbegy(window) + correct1) && event.y < (getbegy(window) + getmaxy(window) - 1 + correct2) &&\
+ event.x > (getbegx(window) + correct3) && event.x < (getbegx(window) + getmaxx(window) - 1 + correct4))
case KEY_MOUSE:
if (getmouse(&m_event) == OK) {
@@ -885,7 +885,7 @@ int main(int argc, char **argv)
mvwin_wch(window_def, m_event.y - 2, x, &cc);
ch = cc.chars[0];
buf[i++] = ch;
- } while ((iswalpha(ch) || ch == L'-') && x < window_def->_maxx);
+ } while ((iswalpha(ch) || ch == L'-') && x < getmaxx(window_def) - 1);
buf[--i] = L'\0';
--
2.43.0