]> sigrok.org Git - libsigrok.git/commitdiff
chronovu-la8: Fix memory leak in hw_scan
authorAlexandru Gagniuc <redacted>
Mon, 17 Dec 2012 08:04:35 +0000 (02:04 -0600)
committerUwe Hermann <redacted>
Tue, 18 Dec 2012 01:08:36 +0000 (02:08 +0100)
Hardware scanning creates an ftdi_context before attempting to locate devices
based on PID/VID. If no devices are detected, execution jumps to cleanup. The
context is freed with free(), instead of ftdi_free().

We cannot assume that the libftdi context is stored in a contiguous memory
region, and thus cannot use a simple free. Case in point, this situation is
identified by valgrind as a "definitely lost" memory leak.

Use ftdi_free() instead of a simple free() in hw_scan(). Valgrind no longer
complains about a memory leak in this area.

clear_instances() does not need any modification, as it correctly uses
ftdi_free().

Signed-off-by: Alexandru Gagniuc <redacted>
hardware/chronovu-la8/api.c

index 9a512f90c786fbd930e4e0c89860a69b6cccf8e6..c7a5ba83c8084bdba1acb82ba467b1b9dd4a0031 100644 (file)
@@ -179,7 +179,7 @@ static GSList *hw_scan(GSList *options)
 err_close_ftdic:
        (void) la8_close(devc); /* Log, but ignore errors. */
 err_free_ftdic:
-       free(devc->ftdic); /* NOT g_free()! */
+       ftdi_free(devc->ftdic); /* NOT free() or g_free()! */
 err_free_final_buf:
        g_free(devc->final_buf);
 err_free_devc: