X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Foutput%2Fcsv.c;h=831208dc6bf367f40a7d088cb7b4360dd56b0076;hb=f06fb3e9f1fdfc3780bfa8cb06f76a2d630d6f1c;hp=c39c29a7378fe9cd935fbaff0f35f2255f548f2a;hpb=2ea1fdf12113311cbe1a4316e9e2efe4d8ac40f0;p=libsigrok.git diff --git a/src/output/csv.c b/src/output/csv.c index c39c29a7..831208dc 100644 --- a/src/output/csv.c +++ b/src/output/csv.c @@ -378,11 +378,11 @@ static void process_logic(struct context *ctx, for (j = ch = 0; ch < ctx->num_logic_channels; j++) { if (ctx->channels[j].ch->type == SR_CHANNEL_LOGIC) { - for (i = 0; i <= logic->length - logic->unitsize; i += logic->unitsize) { - sample = logic->data + i; - idx = ctx->channels[ch].ch->index; + for (i = 0; i < num_samples; i++) { + sample = logic->data + i * logic->unitsize; + idx = ctx->channels[j].ch->index; if (ctx->label_do && !ctx->label_names) - ctx->channels[i].label = "logic"; + ctx->channels[j].label = "logic"; ctx->logic_samples[i * ctx->num_logic_channels + ch] = sample[idx / 8] & (1 << (idx % 8)); } ch++; @@ -457,7 +457,7 @@ static void dump_saved_values(struct context *ctx, GString **out) } if (ctx->time) - g_string_append_printf(*out, "%lu%s", + g_string_append_printf(*out, "%" PRIu64 "%s", ctx->sample_time, ctx->value); for (j = 0; j < num_channels; j++) { @@ -608,6 +608,7 @@ static int cleanup(struct sr_output *o) g_free((gpointer)ctx->frame); g_free((gpointer)ctx->comment); g_free((gpointer)ctx->gnuplot); + g_free((gpointer)ctx->value); g_free(ctx->previous_sample); g_free(ctx->channels); g_free(o->priv);