* tracepoint.c (current_trace_status): Don't make sure error_desc
authorPedro Alves <palves@redhat.com>
Fri, 26 Mar 2010 15:26:29 +0000 (15:26 +0000)
committerPedro Alves <palves@redhat.com>
Fri, 26 Mar 2010 15:26:29 +0000 (15:26 +0000)
is non-NULL here.
(parse_trace_status): Release a previous error_desc string, and
set it to NULL by default.  If stop reason is tracepoint_error,
make sure error_desc is not left NULL.

gdb/ChangeLog
gdb/tracepoint.c

index 90c01a9c000a1db8d931409e4c92f35a988b9d55..9ae7ec166662737fcb4a1efa19c66d4c84b2e610 100644 (file)
@@ -1,3 +1,11 @@
+2010-03-26  Pedro Alves  <pedro@codesourcery.com>
+
+       * tracepoint.c (current_trace_status): Don't make sure error_desc
+       is non-NULL here.
+       (parse_trace_status): Release a previous error_desc string, and
+       set it to NULL by default.  If stop reason is tracepoint_error,
+       make sure error_desc is not left NULL.
+
 2010-03-26  Pedro Alves  <pedro@codesourcery.com>
 
        * tracepoint.c (trace_save): Remove X from tracepoint error
index 95e34787508e8d0924d44694cee4c47d29d3c4f5..42210d4db1625ec2000327cebe8e64c9a09bd6ca 100644 (file)
@@ -202,9 +202,6 @@ char *stop_reason_names[] = {
 struct trace_status *
 current_trace_status ()
 {
-  /* Ensure this is never NULL.  */
-  if (!trace_status.error_desc)
-    trace_status.error_desc = "";
   return &trace_status;
 }
 
@@ -3157,7 +3154,8 @@ parse_trace_status (char *line, struct trace_status *ts)
   ts->running_known = 1;
   ts->running = (*p++ == '1');
   ts->stop_reason = trace_stop_reason_unknown;
-  ts->error_desc = "";
+  xfree (ts->error_desc);
+  ts->error_desc = NULL;
   ts->traceframe_count = -1;
   ts->traceframes_created = -1;
   ts->buffer_free = -1;
@@ -3201,6 +3199,9 @@ Status line: '%s'\n"), p, line);
              end = hex2bin (p1, ts->error_desc, (p2 - p1) / 2);
              ts->error_desc[end] = '\0';
            }
+         else
+           ts->error_desc = xstrdup ("");
+
          p = unpack_varlen_hex (++p2, &val);
          ts->stopping_tracepoint = val;
          ts->stop_reason = tracepoint_error;