]> sigrok.org Git - libsigrok.git/blobdiff - src/input/wav.c
input: fix leak of config data in several input modules
[libsigrok.git] / src / input / wav.c
index 4f36e8c45126aac8791a55ddef31563bab0db2cc..1b985edca632c3828ed4bd5ba6c857ede43c8bc6 100644 (file)
@@ -17,6 +17,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <config.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
@@ -24,7 +25,7 @@
 #include <ctype.h>
 #include <string.h>
 #include <stdint.h>
-#include "libsigrok.h"
+#include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
 
 #define LOG_PREFIX "input/wav"
@@ -180,7 +181,7 @@ static int find_data_chunk(GString *buf, int initial_offset)
 static void send_chunk(const struct sr_input *in, int offset, int num_samples)
 {
        struct sr_datafeed_packet packet;
-       struct sr_datafeed_analog analog;
+       struct sr_datafeed_analog_old analog;
        struct context *inc;
        float fdata[CHUNK_SIZE];
        uint64_t sample;
@@ -222,7 +223,7 @@ static void send_chunk(const struct sr_input *in, int offset, int num_samples)
                s += inc->unitsize;
                d += inc->unitsize;
        }
-       packet.type = SR_DF_ANALOG;
+       packet.type = SR_DF_ANALOG_OLD;
        packet.payload = &analog;
        analog.channels = in->sdi->channels;
        analog.num_samples = num_samples;
@@ -257,6 +258,7 @@ static int process_buffer(struct sr_input *in)
                src = sr_config_new(SR_CONF_SAMPLERATE, g_variant_new_uint64(inc->samplerate));
                meta.config = g_slist_append(NULL, src);
                sr_session_send(in->sdi, &packet);
+               g_slist_free(meta.config);
                sr_config_free(src);
 
                inc->started = TRUE;