librtlsdr.c suggestions

Leif Asbrink leif at
Sat Jan 26 03:05:41 UTC 2013

Hi All,

In case buffer allocation fails there will be a crash.

I suggest something like this in rtlsdr_read_async:

        if(_rtlsdr_alloc_async_buffers(dev) < 0)
          return -1;

The function _rtlsdr_alloc_async_buffers needs tests for
malloc returning NULL with an appropriate return of an
error code to make the above work.

Immediately below the suggested change it may be a good idea
to introduce a small delay. Without this delay 
libusb-1.0 crashes under Windows if the sampling rate is high
and the computer is a bit slow:

        for(i = 0; i < dev->xfer_buf_num; ++i) {
#ifdef _WIN32


A little further down one more change is desireable:
                        /*fprintf(stderr, "handle_events returned: %d\n", r);
                        if (r == LIBUSB_ERROR_INTERRUPTED || r==-1) /* stray 

The error code -1 occurs frequently but the data supplied to
the application callback is perfectly OK. On faster computers
there is never any error, but with a Centrino Duo at 900 kHz
there are 2 or 3 errors (-1) for each proper return in case
small buffers are selected.



More information about the osmocom-sdr mailing list