]> sigrok.org Git - libsigrok.git/commitdiff
output/analog: Allocate correct buffer size for sr_analog_to_float().
authorMartin Ling <redacted>
Wed, 9 Sep 2015 23:45:32 +0000 (00:45 +0100)
committerUwe Hermann <redacted>
Sun, 20 Sep 2015 22:32:25 +0000 (00:32 +0200)
src/output/analog.c

index 6a9ab5973357ec86ae6841526136275538f3e3ad..4018ec888659f797231f48fbca4d97eb2df1be62 100644 (file)
@@ -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;