This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH c++ 06/12] Fix constness problem in ioscm_make_gdb_stdio_port


ioscm_make_gdb_stdio_port passes const char pointers (literal strings) to
scm_mode_bits, which takes a non-const char pointer.  Ideally, we would
change scm_mode_bits to take a const char pointer, but it's not part of
an API we control.

Instead, it's easy enough to build the string to pass to scm_mode_bits in
a (non-const) char array and pass that.

gdb/ChangeLog:

	* guile/scm-ports.c (ioscm_make_gdb_stdio_port): Pass non-const
	char pointer to scm_mode_bits.
---
 gdb/guile/scm-ports.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/gdb/guile/scm-ports.c b/gdb/guile/scm-ports.c
index 925f3b2..49e4fd6 100644
--- a/gdb/guile/scm-ports.c
+++ b/gdb/guile/scm-ports.c
@@ -357,29 +357,38 @@ ioscm_init_stdio_buffers (SCM port, long mode_bits)
 static SCM
 ioscm_make_gdb_stdio_port (int fd)
 {
-  int is_a_tty = isatty (fd);
   const char *name;
   long mode_bits;
   SCM port;
+  char buf[3];
+
+  memset (buf, 0, sizeof (buf));
 
   switch (fd)
     {
     case 0:
       name = input_port_name;
-      mode_bits = scm_mode_bits (is_a_tty ? "r0" : "r");
+      buf[0] = 'r';
       break;
     case 1:
       name = output_port_name;
-      mode_bits = scm_mode_bits (is_a_tty ? "w0" : "w");
+      buf[0] = 'w';
       break;
     case 2:
       name = error_port_name;
-      mode_bits = scm_mode_bits (is_a_tty ? "w0" : "w");
+      buf[0] = 'w';
       break;
     default:
       gdb_assert_not_reached ("bad stdio file descriptor");
     }
 
+  if (isatty (fd))
+    {
+      buf[1] = '0';
+    }
+
+  mode_bits = scm_mode_bits (buf);
+
   port = ioscm_open_port (stdio_port_desc, mode_bits);
 
   scm_set_port_filename_x (port, gdbscm_scm_from_c_string (name));
-- 
2.6.2


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]