diff --git a/libfprint/drivers/aes1610.c b/libfprint/drivers/aes1610.c
index 2e04c59..a4847fb 100644
--- a/libfprint/drivers/aes1610.c
+++ b/libfprint/drivers/aes1610.c
@@ -616,7 +616,8 @@ static void capture_read_strip_cb(struct libusb_transfer *transfer)
 		aesdev->strips = g_slist_reverse(aesdev->strips);
 		img = aes_assemble(aesdev->strips, aesdev->strips_len,
 			FRAME_WIDTH, FRAME_HEIGHT);
-		g_slist_free_full(aesdev->strips, g_free);
+		g_slist_foreach(aesdev->strips, (GFunc) g_free, NULL);
+		g_slist_free(aesdev->strips);
 		aesdev->strips = NULL;
 		aesdev->strips_len = 0;
 		aesdev->blanks_count = 0;
diff --git a/libfprint/drivers/aes2501.c b/libfprint/drivers/aes2501.c
index 75d19fc..f4912b7 100644
--- a/libfprint/drivers/aes2501.c
+++ b/libfprint/drivers/aes2501.c
@@ -485,7 +485,8 @@ static void capture_read_strip_cb(struct libusb_transfer *transfer)
 			aesdev->strips = g_slist_reverse(aesdev->strips);
 			img = aes_assemble(aesdev->strips, aesdev->strips_len,
 				FRAME_WIDTH, FRAME_HEIGHT);
-			g_slist_free_full(aesdev->strips, g_free);
+			g_slist_foreach(aesdev->strips, (GFunc) g_free, NULL);
+			g_slist_free(aesdev->strips);
 			aesdev->strips = NULL;
 			aesdev->strips_len = 0;
 			fpi_imgdev_image_captured(dev, img);
diff --git a/libfprint/drivers/aes2550.c b/libfprint/drivers/aes2550.c
index 96ce590..30b6dc6 100644
--- a/libfprint/drivers/aes2550.c
+++ b/libfprint/drivers/aes2550.c
@@ -252,7 +252,8 @@ static void capture_set_idle_reqs_cb(struct libusb_transfer *transfer)
 		aesdev->strips = g_slist_reverse(aesdev->strips);
 		img = aes_assemble(aesdev->strips, aesdev->strips_len,
 			FRAME_WIDTH, FRAME_HEIGHT);
-		g_slist_free_full(aesdev->strips, g_free);
+		g_slist_foreach(aesdev->strips, (GFunc) g_free, NULL);
+		g_slist_free(aesdev->strips);
 		aesdev->strips = NULL;
 		aesdev->strips_len = 0;
 		fpi_imgdev_image_captured(dev, img);