58 lines
1.7 KiB
Diff
58 lines
1.7 KiB
Diff
diff --git a/gdb/utils.c b/gdb/utils.c
|
|
--- a/gdb/utils.c
|
|
+++ b/gdb/utils.c
|
|
@@ -1783,7 +1783,12 @@ fputs_maybe_filtered (const char *linebuffer, struct ui_file *stream,
|
|
newline -- if chars_per_line is right, we
|
|
probably just overflowed anyway; if it's wrong,
|
|
let us keep going. */
|
|
- fputc_unfiltered ('\n', stream);
|
|
+ /* XXX: The ideal thing would be to call
|
|
+ 'stream->putc' here, but we can't because it
|
|
+ currently calls 'fputc_unfiltered', which ends up
|
|
+ calling us, which generates an infinite
|
|
+ recursion. */
|
|
+ stream->puts ("\n");
|
|
}
|
|
else
|
|
{
|
|
@@ -1828,7 +1833,12 @@ fputs_maybe_filtered (const char *linebuffer, struct ui_file *stream,
|
|
wrap_here ((char *) 0); /* Spit out chars, cancel
|
|
further wraps. */
|
|
lines_printed++;
|
|
- fputc_unfiltered ('\n', stream);
|
|
+ /* XXX: The ideal thing would be to call
|
|
+ 'stream->putc' here, but we can't because it
|
|
+ currently calls 'fputc_unfiltered', which ends up
|
|
+ calling us, which generates an infinite
|
|
+ recursion. */
|
|
+ stream->puts ("\n");
|
|
lineptr++;
|
|
}
|
|
}
|
|
@@ -1923,10 +1933,7 @@ fputs_highlighted (const char *str, const compiled_regex &highlight,
|
|
int
|
|
putchar_unfiltered (int c)
|
|
{
|
|
- char buf = c;
|
|
-
|
|
- ui_file_write (gdb_stdout, &buf, 1);
|
|
- return c;
|
|
+ return fputc_unfiltered (c, gdb_stdout);
|
|
}
|
|
|
|
/* Write character C to gdb_stdout using GDB's paging mechanism and return C.
|
|
@@ -1941,9 +1948,11 @@ putchar_filtered (int c)
|
|
int
|
|
fputc_unfiltered (int c, struct ui_file *stream)
|
|
{
|
|
- char buf = c;
|
|
+ char buf[2];
|
|
|
|
- ui_file_write (stream, &buf, 1);
|
|
+ buf[0] = c;
|
|
+ buf[1] = 0;
|
|
+ fputs_unfiltered (buf, stream);
|
|
return c;
|
|
}
|
|
|