Control: tags -1 + patch
On 2023-12-05 23:11 +0100, Santiago Vila wrote:
> Package: src:tetradraw
> Version: 2.0.3-10
> Severity: serious
> Tags: ftbfs
>
> Dear maintainer:
>
> During a rebuild of all packages in unstable, your package failed to build:
>
> --------------------------------------------------------------------------------
> interface.c: In function ‘tv_file_select’:
> interface.c:1069:36: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
> 1069 | if(items[y]->index != index)
> menu_driver(menu, REQ_DOWN_ITEM);
> | ^~
> interface.c:1079:32: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
> 1079 | index = current->index;
> | ^~
> interface.c:1111:56: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
> 1111 | index = current->index;
> | ^~
> interface.c:1136:40: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
> 1136 | index = current->index;
> | ^~
> interface.c:1146:40: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
> 1146 | index = current->index;
> | ^~
> interface.c: In function ‘file_select’:
> interface.c:1217:36: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
> 1217 | if(items[y]->index != index)
> menu_driver(menu, REQ_DOWN_ITEM);
> | ^~
> gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I. -Wdate-time -D_FORTIFY_SOURCE=2 -Wall
> -ggdb3 -c -o load.o load.c
> interface.c:1221:32: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
> 1221 | index = current->index;
> | ^~
> interface.c:1259:56: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
> 1259 | index = current->index;
> | ^~
> interface.c:1284:40: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
item_index> 1284 | index = current->index;
> | ^~
> interface.c:1299:40: error: invalid use of incomplete typedef ‘ITEM’ {aka
> ‘struct tagITEM’}
> 1299 | index = current->index;
These errors have been triggered by a recent change in ncurses which
makes the ITEM structure opaque, its members cannot be addressed
directly anymore. The remedy is rather simple: instead of
item->index, use item_index(item) to retrieve the index. See the
attached patch which can be added to the series file.
Disclaimer: I have only tested that the package builds, not if it works.
Cheers,
Sven
From 037e6dd0794674264cee0049f49f39a60fe7cb40 Mon Sep 17 00:00:00 2001
From: Sven Joachim <[email protected]>
Date: Mon, 18 Dec 2023 17:14:36 +0100
Subject: [PATCH] Fix FTBFS with opaque ncurses
Since ncurses patchlevel 20231021 the ITEM structure is opaque, its
members cannot be addressed directly. Use the item_index function
instead.
---
src/interface.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/interface.c b/src/interface.c
index 2692b18..25a174d 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -1066,7 +1066,7 @@ char *tv_file_select(int next) {
post_menu(menu);
for(y = 0; items[y]; y++)
- if(items[y]->index != index) menu_driver(menu, REQ_DOWN_ITEM);
+ if(item_index(items[y]) != index) menu_driver(menu, REQ_DOWN_ITEM);
else break;
if(next) {
@@ -1076,7 +1076,7 @@ char *tv_file_select(int next) {
}
current = current_item(menu);
- index = current->index;
+ index = item_index(current);
wrefresh(wf);
while((ch = getch()) != 13) {
switch(ch) {
@@ -1108,7 +1108,7 @@ char *tv_file_select(int next) {
break;
case TD_KEY_ESCAPE:
current = current_item(menu);
- index = current->index;
+ index = item_index(current);
unpost_menu(menu);
free_menu(menu);
@@ -1133,7 +1133,7 @@ char *tv_file_select(int next) {
}
}
current = current_item(menu);
- index = current->index;
+ index = item_index(current);
wrefresh(wf);
}
if(strcmp("", input)) {
@@ -1143,7 +1143,7 @@ char *tv_file_select(int next) {
} else {
hugehack:
current = current_item(menu);
- index = current->index;
+ index = item_index(current);
unpost_menu(menu);
free_menu(menu);
free_items(items);
@@ -1214,11 +1214,11 @@ char *file_select() {
post_menu(menu);
for(y = 0; items[y]; y++)
- if(items[y]->index != index) menu_driver(menu, REQ_DOWN_ITEM);
+ if(item_index(items[y]) != index) menu_driver(menu, REQ_DOWN_ITEM);
else break;
current = current_item(menu);
- index = current->index;
+ index = item_index(current);
memset(&sauce_title, 0, sizeof(sauce_title));
memset(&sauce_group, 0, sizeof(sauce_group));
memset(&sauce_author, 0, sizeof(sauce_author));
@@ -1256,7 +1256,7 @@ char *file_select() {
break;
case TD_KEY_ESCAPE:
current = current_item(menu);
- index = current->index;
+ index = item_index(current);
unpost_menu(menu);
free_menu(menu);
@@ -1281,7 +1281,7 @@ char *file_select() {
}
}
current = current_item(menu);
- index = current->index;
+ index = item_index(current);
memset(&sauce_title, 0, sizeof(sauce_title));
memset(&sauce_group, 0, sizeof(sauce_group));
memset(&sauce_author, 0, sizeof(sauce_author));
@@ -1296,7 +1296,7 @@ char *file_select() {
return fname;
} else {
current = current_item(menu);
- index = current->index;
+ index = item_index(current);
unpost_menu(menu);
free_menu(menu);
free_items(items);
--
2.43.0