tui: Fix newterm call for older ncurses
Commit Message
Older versions of ncurses' newterm can't take NULL for their ofp and ifp
parameters. Newer versions can, and they fall back on stdout/stdin if
that is the case.
This patch explicitely passes stdout/stdin to the call to newterm to
avoid segfaulting with older ncurses.
Reference: https://sourceware.org/ml/gdb-patches/2014-11/msg00055.html
gdb/Changelog:
2014-11-04 Simon Marchi <simon.marchi@ericsson.com>
* tui/tui.c (tui_enable): Pass pass stdout and stdin to newterm.
---
gdb/tui/tui.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On 11/04/2014 01:31 PM, Simon Marchi wrote:
> Older versions of ncurses' newterm can't take NULL for their ofp and ifp
> parameters. Newer versions can, and they fall back on stdout/stdin if
> that is the case.
>
> This patch explicitely passes stdout/stdin to the call to newterm to
"explicitly"
> avoid segfaulting with older ncurses.
>
> Reference: https://sourceware.org/ml/gdb-patches/2014-11/msg00055.html
>
OK.
> gdb/Changelog:
>
> 2014-11-04 Simon Marchi <simon.marchi@ericsson.com>
>
> * tui/tui.c (tui_enable): Pass pass stdout and stdin to newterm.
Double "pass".
Thanks,
Pedro Alves
On 2014-11-04 02:08 PM, Pedro Alves wrote:
> On 11/04/2014 01:31 PM, Simon Marchi wrote:
>> Older versions of ncurses' newterm can't take NULL for their ofp and ifp
>> parameters. Newer versions can, and they fall back on stdout/stdin if
>> that is the case.
>>
>> This patch explicitely passes stdout/stdin to the call to newterm to
>
> "explicitly"
>
>> avoid segfaulting with older ncurses.
>>
>> Reference: https://sourceware.org/ml/gdb-patches/2014-11/msg00055.html
>>
>
> OK.
>
>> gdb/Changelog:
>>
>> 2014-11-04 Simon Marchi <simon.marchi@ericsson.com>
>>
>> * tui/tui.c (tui_enable): Pass pass stdout and stdin to newterm.
>
> Double "pass".
>
> Thanks,
> Pedro Alves
Pushed with the fixes to the commit message and ChangeLog, thanks.
@@ -424,7 +424,7 @@ tui_enable (void)
if (!ui_file_isatty (gdb_stdout))
error (_("Cannot enable the TUI when output is not a terminal"));
- s = newterm (NULL, NULL, NULL);
+ s = newterm (NULL, stdout, stdin);
if (s == NULL)
{
error (_("Cannot enable the TUI: error opening terminal [TERM=%s]"),