[PATCHv2] Fix multi-line strings in TuiWindow.write

Hannes Domani ssbssa@yahoo.de
Fri Nov 20 00:01:07 GMT 2020


Currently multi-line strings are all written to the first line.

Since tui_copy_source_line sets the text variable to the start of the
next line, the check for newline has to be done with the previous character.

gdb/ChangeLog:

2020-11-19  Hannes Domani  <ssbssa@yahoo.de>

	* python/py-tui.c (tui_py_window::output): Fix multi-line strings.
---
v2:
- Don't break multiple TuiWindow.write calls without newline characters.
---
 gdb/python/py-tui.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c
index 95c71f1d2d..306bd7b801 100644
--- a/gdb/python/py-tui.c
+++ b/gdb/python/py-tui.c
@@ -203,13 +203,13 @@ tui_py_window::output (const char *text)
     {
       wmove (handle.get (), cursor_y + 1, cursor_x + 1);
 
+      const char *prev_text = text;
       std::string line = tui_copy_source_line (&text, 0, 0,
 					       vwidth - cursor_x, 0);
       tui_puts (line.c_str (), handle.get ());
 
-      if (*text == '\n')
+      if (text > prev_text && (text[-1] == '\n' || text[-1] == '\r'))
 	{
-	  ++text;
 	  ++cursor_y;
 	  cursor_x = 0;
 	}
-- 
2.29.2



More information about the Gdb-patches mailing list