>From 0c466fe194259ff10a58ae1c1d8beb895d034bcb Mon Sep 17 00:00:00 2001
From: Alexander Kurpiers <[email protected]>
Date: Thu, 9 Jan 2014 20:46:51 +0100
Subject: [PATCH 6/7] Return error code

Jan 26 2013 SM5BSZ
---
 src/librtlsdr.c |   15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/librtlsdr.c b/src/librtlsdr.c
index a889330..5e5775b 100644
--- a/src/librtlsdr.c
+++ b/src/librtlsdr.c
@@ -1699,6 +1699,8 @@ static int _rtlsdr_alloc_async_buffers(rtlsdr_dev_t *dev)
 	if (!dev->xfer) {
 		dev->xfer = malloc(dev->xfer_buf_num *
 				   sizeof(struct libusb_transfer *));
+	if (dev->xfer == NULL)
+		return -1;
 
 		for(i = 0; i < dev->xfer_buf_num; ++i)
 			dev->xfer[i] = libusb_alloc_transfer(0);
@@ -1707,9 +1709,14 @@ static int _rtlsdr_alloc_async_buffers(rtlsdr_dev_t *dev)
 	if (!dev->xfer_buf) {
 		dev->xfer_buf = malloc(dev->xfer_buf_num *
 					   sizeof(unsigned char *));
+	if (dev->xfer_buf == NULL)
+		return -1;
 
-		for(i = 0; i < dev->xfer_buf_num; ++i)
+		for(i = 0; i < dev->xfer_buf_num; ++i){
 			dev->xfer_buf[i] = malloc(dev->xfer_buf_len);
+			if (dev->xfer_buf[i] == NULL)
+				return -1;
+		}
 	}
 
 	return 0;
@@ -1777,7 +1784,11 @@ int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
 	else
 		dev->xfer_buf_len = DEFAULT_BUF_LENGTH;
 
-	_rtlsdr_alloc_async_buffers(dev);
+	/* Check the error code. Free return if errors */
+	if(_rtlsdr_alloc_async_buffers(dev) < 0) {
+		_rtlsdr_free_async_buffers(dev);
+		return -1;
+	}
 
 	for(i = 0; i < dev->xfer_buf_num; ++i) {
 	/* Sleep a little here. 
-- 
1.7.9.5

Reply via email to