Control: tags -1 + patch
On 2023-12-05 23:07 +0100, Santiago Vila wrote:
> Package: src:nfstrace
> Version: 0.4.3.2+git20200805+b220d04-2.2
> Severity: serious
> Tags: ftbfs
>
> Dear maintainer:
>
> During a rebuild of all packages in unstable, your package failed to build:
>
> --------------------------------------------------------------------------------
> [ 7%] Building CXX object
> analyzers/src/watch/CMakeFiles/watch.dir/nc_windows/header_window.cpp.o
> cd /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/analyzers/src/watch && /usr/bin/c++
> -Dwatch_EXPORTS -I/<<PKGBUILDDIR>>/src -I/usr/include/tirpc
> -I/<<PKGBUILDDIR>>/analyzers/src/watch -g -O2
> -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong
> -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
> -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++14 -pedantic -Wall -Werror -Wextra
> -Wno-invalid-offsetof -Wno-error=address-of-packed-member -fPIC
> -fvisibility=hidden -fPIC -MD -MT
> analyzers/src/watch/CMakeFiles/watch.dir/nc_windows/header_window.cpp.o -MF
> CMakeFiles/watch.dir/nc_windows/header_window.cpp.o.d -o
> CMakeFiles/watch.dir/nc_windows/header_window.cpp.o -c
> /<<PKGBUILDDIR>>/analyzers/src/watch/nc_windows/header_window.cpp
> /<<PKGBUILDDIR>>/analyzers/src/watch/nc_windows/header_window.cpp: In member
> function ‘void HeaderWindow::resize(MainWindow&)’:
> /<<PKGBUILDDIR>>/analyzers/src/watch/nc_windows/header_window.cpp:90:72:
> error: invalid use of incomplete type ‘WINDOW’ {aka ‘struct _win_st’}
> 90 | _window = subwin(m._window,
> std::min(static_cast<int>(m._window->_maxy), GUI_HEADER_HEIGHT),
> std::min(static_cast<int>(m._window->_maxx), GUI_LENGTH), 0, 0);
> |
> ^~
> In file included from
> /<<PKGBUILDDIR>>/analyzers/src/watch/nc_windows/header_window.h:25,
> from
> /<<PKGBUILDDIR>>/analyzers/src/watch/nc_windows/header_window.cpp:28:
> /usr/include/curses.h:442:16: note: forward declaration of ‘WINDOW’ {aka
> ‘struct _win_st’}
> 442 | typedef struct _win_st WINDOW;
> | ^~~~~~~
> /<<PKGBUILDDIR>>/analyzers/src/watch/nc_windows/header_window.cpp:90:137:
> error: invalid use of incomplete type ‘WINDOW’ {aka ‘struct _win_st’}
> 90 | _window = subwin(m._window,
> std::min(static_cast<int>(m._window->_maxy), GUI_HEADER_HEIGHT),
> std::min(static_cast<int>(m._window->_maxx), GUI_LENGTH), 0, 0);
> |
> ^~
> /usr/include/curses.h:442:16: note: forward declaration of ‘WINDOW’ {aka
> ‘struct _win_st’}
> 442 | typedef struct _win_st WINDOW;
> | ^~~~~~~
> make[3]: *** [analyzers/src/watch/CMakeFiles/watch.dir/build.make:79:
> analyzers/src/watch/CMakeFiles/watch.dir/nc_windows/header_window.cpp.o]
> Error 1
The attached patch fixes these errors and similar ones in
analyzers/src/watch/nc_windows/statistics_window.cpp. Note that
getmaxx(window) returns window->_maxx + 1, and similar for getmaxy().
Disclaimer: I have only tested that the package builds, not if it works.
Cheers,
Sven
From dcffbee1fa8170fdf6906791eb0239fac63e5333 Mon Sep 17 00:00:00 2001
From: Sven Joachim <[email protected]>
Date: Thu, 21 Dec 2023 17:12:56 +0100
Subject: [PATCH] Fix FTBFS with opqaque ncurses
Since ncurses patchlevel 20231021 the WINDOW structure is opaque, its
members cannot be addressed directly. Use the getmaxy/getmaxx
functions ncurses provides for this purpose instead.
---
analyzers/src/watch/nc_windows/header_window.cpp | 2 +-
analyzers/src/watch/nc_windows/statistics_window.cpp | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/analyzers/src/watch/nc_windows/header_window.cpp b/analyzers/src/watch/nc_windows/header_window.cpp
index a376488..047d555 100644
--- a/analyzers/src/watch/nc_windows/header_window.cpp
+++ b/analyzers/src/watch/nc_windows/header_window.cpp
@@ -87,7 +87,7 @@ void HeaderWindow::resize(MainWindow& m)
}
if(m._window != nullptr)
{
- _window = subwin(m._window, std::min(static_cast<int>(m._window->_maxy), GUI_HEADER_HEIGHT), std::min(static_cast<int>(m._window->_maxx), GUI_LENGTH), 0, 0);
+ _window = subwin(m._window, std::min(static_cast<int>(getmaxy(m._window) - 1 ), GUI_HEADER_HEIGHT), std::min(static_cast<int>(getmaxx(m._window) - 1 ), GUI_LENGTH), 0, 0);
}
if(_window != nullptr)
{
diff --git a/analyzers/src/watch/nc_windows/statistics_window.cpp b/analyzers/src/watch/nc_windows/statistics_window.cpp
index b580bba..c2e27fc 100644
--- a/analyzers/src/watch/nc_windows/statistics_window.cpp
+++ b/analyzers/src/watch/nc_windows/statistics_window.cpp
@@ -50,7 +50,7 @@ void StatisticsWindow::destroy()
bool StatisticsWindow::canWrite(unsigned int i)
{
- return (i >= _scrollOffset.at(_activeProtocol) + STATISTICS::FIRST_OPERATION_LINE && i - _scrollOffset.at(_activeProtocol) + BORDER_SIZE < static_cast<unsigned int>(_window->_maxy));
+ return (i >= _scrollOffset.at(_activeProtocol) + STATISTICS::FIRST_OPERATION_LINE && i - _scrollOffset.at(_activeProtocol) + BORDER_SIZE < static_cast<unsigned int>(getmaxy(_window) - 1));
}
StatisticsWindow::StatisticsWindow(MainWindow& w, StatisticsContainers& c)
@@ -182,10 +182,10 @@ void StatisticsWindow::resize(MainWindow& m)
{
tmp_size = _activeProtocol->getAmount() + 2 * BORDER_SIZE + 2 * EMPTY_LINE + STATISTICS::PROTOCOLS_LINE + _activeProtocol->getGroups() * EMPTY_LINE * _activeProtocol->getGroups();
}
- if(m._window != nullptr && m._window->_maxy > GUI_HEADER_HEIGHT)
+ if(m._window != nullptr && getmaxy(m._window) - 1 > GUI_HEADER_HEIGHT)
{
- _window = subwin(m._window, std::min(static_cast<int>(m._window->_maxy - GUI_HEADER_HEIGHT), tmp_size),
- std::min(static_cast<int>(m._window->_maxx), GUI_LENGTH), GUI_HEADER_HEIGHT - BORDER_SIZE, 0);
+ _window = subwin(m._window, std::min(static_cast<int>(getmaxy(m._window) - 1 - GUI_HEADER_HEIGHT), tmp_size),
+ std::min(static_cast<int>(getmaxx(m._window) - 1), GUI_LENGTH), GUI_HEADER_HEIGHT - BORDER_SIZE, 0);
updateProtocol(_activeProtocol);
}
}
--
2.43.0