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 <svenj...@gmx.de>
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

Reply via email to