Control: tags -1 + patch

On 2018-02-22 22:23 +0100, Sven Joachim wrote:

> Source: cwidget
> Version: 0.5.17-7
>
> With the upcoming libncursesw6 package (which is not available yet, but
> everything is ready in git and I have asked for an upload to
> experimental), cwidget FTBFS.  This is the relevant part, I have
> attached the full build log for reference:
>
> ,----
> | text_layout.cc: In member function 'virtual void 
> cwidget::widgets::text_layout::dispatch_mouse(short int, int, int, int, 
> mmask_t)':
> | text_layout.cc:89:57: error: no matching function for call to 'max(int, 
> size_t)'
> |    set_start(std::max(0, start - mouse_wheel_scroll_lines));
> |                                                          ^
> `----

So I have good and bad news.  The good one is that this error was easy
to fix by casting the 0 to size_t, so that both parameters passed to
std::max have the same type.  See the attached patch.

The bad news is that after rebuilding libcwidget3v5 against libncursesw6
aptitude no longer starts:

,----
| $ aptitude
| aptitude: symbol lookup error: aptitude: undefined symbol: 
_ZN7cwidget7widgets6widget14dispatch_mouseEsiiim
| $ objdump -T /usr/lib/i386-linux-gnu/libcwidget.so.3.0.0 | grep 
widget14dispatch_mouse
| 000dde10 g    DF .text  00000002  Base        
_ZN7cwidget7widgets6widget14dispatch_mouseEsiiij
`----

This is because mmask_t is of a different type in libncursesw6.  Looks
like I may have to go back to the drawing board in ncurses and re-enable
the "--with-mmask-t='long'" configure option there.  Oh well. :-(

Cheers,
       Sven

Description: Cast 0 to size_t in text_layout::dispatch_mouse
 This avoids incompatible parameter types in std::max.
Author: Sven Joachim <svenj...@gmx.de>
Bug-Debian: https://bugs.debian.org/891161
Last-Update: 2018-02-23

---
 src/cwidget/widgets/text_layout.cc |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/src/cwidget/widgets/text_layout.cc
+++ b/src/cwidget/widgets/text_layout.cc
@@ -86,7 +86,7 @@ namespace cwidget
 	    {
 	      freshen_contents(lastst);
 	      if(start > 0)
-		set_start(std::max(0, start - mouse_wheel_scroll_lines));
+		set_start(std::max((size_t)0, start - mouse_wheel_scroll_lines));
 	    }
 	}
       else if((bstate & BUTTON5_PRESSED) != 0)

Reply via email to