tracing: Allow empty call to OnTraceData

This change makes it legal for a TracingBackend to call OnTraceData with
zero bytes to signal the end of trace data. This makes it easier to
implement a trace consumer backend in scenarios where trace data and
the EOF signal are delivered separately, i.e., when the backend knows
there's no more data to come, it has already sent all the data to the
consumer.

Bug: 158460267

Change-Id: Ibb918845a0d64d7890a954ad8308d4e8c84e712a
diff --git a/src/tracing/internal/tracing_muxer_impl.cc b/src/tracing/internal/tracing_muxer_impl.cc
index e3e0a43..79eb734 100644
--- a/src/tracing/internal/tracing_muxer_impl.cc
+++ b/src/tracing/internal/tracing_muxer_impl.cc
@@ -253,7 +253,7 @@
   auto callback = read_trace_callback_;
   muxer_->task_runner_->PostTask([callback, buf, has_more] {
     TracingSession::ReadTraceCallbackArgs callback_arg{};
-    callback_arg.data = &(*buf)[0];
+    callback_arg.data = buf->size() ? &(*buf)[0] : nullptr;
     callback_arg.size = buf->size();
     callback_arg.has_more = has_more;
     callback(callback_arg);