]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/pipistrello-ols/protocol.c
rigol-ds: Fix wrong channel group malloc size.
[libsigrok.git] / src / hardware / pipistrello-ols / protocol.c
index 81bbe8e647fe02e09f9b45716e1a0896adcd8c7f..1d0c9f208839200ee97c5de38fc66d479b55f187 100644 (file)
@@ -219,14 +219,13 @@ SR_PRIV int pols_convert_trigger(const struct sr_dev_inst *sdi)
 SR_PRIV struct sr_dev_inst *p_ols_get_metadata(uint8_t *buf, int bytes_read, struct dev_context *devc)
 {
        struct sr_dev_inst *sdi;
-       struct sr_channel *ch;
        uint32_t tmp_int, ui;
        uint8_t key, type, token;
        GString *tmp_str, *devname, *version;
        guchar tmp_c;
        int index, i;
 
-       sdi = sr_dev_inst_new();
+       sdi = g_malloc0(sizeof(struct sr_dev_inst));
        sdi->status = SR_ST_INACTIVE;
        sdi->driver = di;
        sdi->priv = devc;
@@ -288,12 +287,9 @@ SR_PRIV struct sr_dev_inst *p_ols_get_metadata(uint8_t *buf, int bytes_read, str
                        switch (token) {
                        case 0x00:
                                /* Number of usable channels */
-                               for (ui = 0; ui < tmp_int; ui++) {
-                                       if (!(ch = sr_channel_new(ui, SR_CHANNEL_LOGIC, TRUE,
-                                                       p_ols_channel_names[ui])))
-                                               return 0;
-                                       sdi->channels = g_slist_append(sdi->channels, ch);
-                               }
+                               for (ui = 0; ui < tmp_int; ui++)
+                                       sr_channel_new(sdi, ui, SR_CHANNEL_LOGIC, TRUE,
+                                                       p_ols_channel_names[ui]);
                                break;
                        case 0x01:
                                /* Amount of sample memory available (bytes) */
@@ -325,12 +321,9 @@ SR_PRIV struct sr_dev_inst *p_ols_get_metadata(uint8_t *buf, int bytes_read, str
                        switch (token) {
                        case 0x00:
                                /* Number of usable channels */
-                               for (ui = 0; ui < tmp_c; ui++) {
-                                       if (!(ch = sr_channel_new(ui, SR_CHANNEL_LOGIC, TRUE,
-                                                       p_ols_channel_names[ui])))
-                                               return 0;
-                                       sdi->channels = g_slist_append(sdi->channels, ch);
-                               }
+                               for (ui = 0; ui < tmp_c; ui++)
+                                       sr_channel_new(sdi, ui, SR_CHANNEL_LOGIC, TRUE,
+                                                       p_ols_channel_names[ui]);
                                break;
                        case 0x01:
                                /* protocol version */