perf tools: Handle newlines in trace parsing better
authorSteven Rostedt <srostedt@redhat.com>
Wed, 14 Oct 2009 19:43:37 +0000 (15:43 -0400)
committerIngo Molnar <mingo@elte.hu>
Thu, 15 Oct 2009 08:42:37 +0000 (10:42 +0200)
New lines between args in the trace format can break the
parsing. This should not be the case.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
LKML-Reference: <20091014194358.637991808@goodmis.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
tools/perf/util/trace-event-parse.c

index f73ee55b51e822f4c68d3e02ceb56e97bda40d6f..59e4e4db7438ed3f5599d5f12232130efd769cdd 100644 (file)
@@ -1716,12 +1716,18 @@ process_arg_token(struct event *event, struct print_arg *arg,
 
 static int event_read_print_args(struct event *event, struct print_arg **list)
 {
-       enum event_type type;
+       enum event_type type = EVENT_ERROR;
        struct print_arg *arg;
        char *token;
        int args = 0;
 
        do {
+               if (type == EVENT_NEWLINE) {
+                       free_token(token);
+                       type = read_token_item(&token);
+                       continue;
+               }
+
                arg = malloc_or_die(sizeof(*arg));
                memset(arg, 0, sizeof(*arg));