From: Martin Ling Date: Wed, 9 Sep 2015 23:45:32 +0000 (+0100) Subject: output/analog: Allocate correct buffer size for sr_analog_to_float(). X-Git-Tag: libsigrok-0.4.0~268 X-Git-Url: http://sigrok.org/gitweb/?p=libsigrok.git;a=commitdiff_plain;h=fa74a26bc94c718bf1b965d553e89c29b4d7133c output/analog: Allocate correct buffer size for sr_analog_to_float(). --- diff --git a/src/output/analog.c b/src/output/analog.c index 6a9ab597..4018ec88 100644 --- a/src/output/analog.c +++ b/src/output/analog.c @@ -315,7 +315,9 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p break; case SR_DF_ANALOG2: analog2 = packet->payload; - if (!(fdata = g_try_malloc(analog2->num_samples * sizeof(float)))) + num_channels = g_slist_length(analog2->meaning->channels); + if (!(fdata = g_try_malloc( + analog2->num_samples * num_channels * sizeof(float)))) return SR_ERR_MALLOC; if ((ret = sr_analog_to_float(analog2, fdata)) != SR_OK) return ret; @@ -330,7 +332,6 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p digits = 6; } sr_analog_unit_to_string(analog2, &suffix); - num_channels = g_slist_length(analog2->meaning->channels); for (i = 0; i < analog2->num_samples; i++) { for (l = analog2->meaning->channels, c = 0; l; l = l->next, c++) { ch = l->data;