From: Gerhard Sittig Date: Thu, 8 Feb 2018 21:04:49 +0000 (+0100) Subject: output/csv: silence NULL dereference compiler warnings X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=a21fef07b65ef6fb77ac2b6a96de51177a84302a;p=libsigrok.git output/csv: silence NULL dereference compiler warnings Check pointers' validity before dereferencing them. This was reported by clang's scan-build. --- diff --git a/src/output/csv.c b/src/output/csv.c index c2450e9c..426cb6ed 100644 --- a/src/output/csv.c +++ b/src/output/csv.c @@ -216,7 +216,7 @@ static GString *gen_header(const struct sr_output *o, struct sr_channel *ch; GVariant *gvar; GString *header; - GSList *l; + GSList *channels, *l; unsigned int num_channels, i; uint64_t samplerate = 0, sr; char *samplerate_s; @@ -256,18 +256,20 @@ static GString *gen_header(const struct sr_output *o, ctx->title, ctime(&hdr->starttime.tv_sec)); /* Columns / channels */ - num_channels = g_slist_length(o->sdi->channels); + channels = o->sdi ? o->sdi->channels : NULL; + num_channels = g_slist_length(channels); g_string_append_printf(header, "%s Channels (%d/%d):", ctx->comment, ctx->num_analog_channels + ctx->num_logic_channels, num_channels); - for (l = o->sdi->channels; l; l = l->next) { + for (l = channels; l; l = l->next) { ch = l->data; if (ch->enabled) g_string_append_printf(header, " %s,", ch->name); } - if (o->sdi->channels) + if (channels) { /* Drop last separator. */ g_string_truncate(header, header->len - 1); + } g_string_append_printf(header, "\n"); if (samplerate != 0) { samplerate_s = sr_samplerate_string(samplerate);