X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fctf.c;h=e84e19d870e0d5bd1531e8cdb9266effa2d6806b;hp=13232692b6be62720bd918b75c7873f28dac5264;hb=c4f5487ee9b60d2a1c0c3dbfedc8f9f377562bc6;hpb=a35173fe7e72fe456cbd19db34a5ff7a09a0c7ff diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c index 13232692..e84e19d8 100644 --- a/formats/ctf/ctf.c +++ b/formats/ctf/ctf.c @@ -457,7 +457,11 @@ int ctf_open_trace_metadata_packet_read(struct ctf_trace *td, FILE *in, ret = -EINVAL; break; } - printf("read %s\n", buf); + if (babeltrace_debug) { + fprintf(stdout, "[debug] metadata packet read: %s\n", + buf); + } + writelen = fwrite(buf, sizeof(char), readlen, out); if (writelen < readlen) { ret = -EIO; @@ -485,6 +489,11 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp, int ret; in = *fp; + /* + * Using strlen on *buf instead of size of open_memstream + * because its size includes garbage at the end (after final + * \0). This is the allocated size, not the actual string size. + */ out = open_memstream(buf, &size); if (out == NULL) return -errno; @@ -502,7 +511,7 @@ int ctf_open_trace_metadata_stream_read(struct ctf_trace *td, FILE **fp, fclose(out); /* flush the buffer */ fclose(in); /* open for reading */ - *fp = fmemopen(*buf, size, "rb"); + *fp = fmemopen(*buf, strlen(*buf), "rb"); return 0; }