]> sigrok.org Git - libsigrok.git/commitdiff
scpi-pps: Fix dev_clear() implementation
authorLars-Peter Clausen <redacted>
Fri, 29 Apr 2016 14:37:36 +0000 (16:37 +0200)
committerLars-Peter Clausen <redacted>
Tue, 3 May 2016 19:24:26 +0000 (21:24 +0200)
Devices for the scpi-pps driver do have additional data attached to it that
needs to be freed when the device is freed. While the driver gets it right
for the cleanup() callback it does not for the dev_clear() callback. This
will cause memory leaks when sr_dev_clear() is called for this driver.

To fix this let the dev_clear() free the additional data.

Signed-off-by: Lars-Peter Clausen <redacted>
src/hardware/scpi-pps/api.c

index 10ab5f9e8335147bae53ad3b804490f073590893..111d76b064b2ef8f5507191a1addfcb0601d1e3c 100644 (file)
@@ -181,11 +181,6 @@ static GSList *dev_list(const struct sr_dev_driver *di)
        return ((struct drv_context *)(di->context))->instances;
 }
 
-static int dev_clear(const struct sr_dev_driver *di)
-{
-       return std_dev_clear(di, NULL);
-}
-
 static int dev_open(struct sr_dev_inst *sdi)
 {
        struct dev_context *devc;
@@ -247,11 +242,16 @@ static void clear_helper(void *priv)
        g_free(devc);
 }
 
-static int cleanup(const struct sr_dev_driver *di)
+static int dev_clear(const struct sr_dev_driver *di)
 {
        return std_dev_clear(di, clear_helper);
 }
 
+static int cleanup(const struct sr_dev_driver *di)
+{
+       return dev_clear(di);
+}
+
 static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi,
                const struct sr_channel_group *cg)
 {