From: Marcus Comstedt Date: Fri, 25 Apr 2014 19:07:16 +0000 (+0200) Subject: saleae-logic16: Don't send more samples than requested. X-Git-Tag: libsigrok-0.3.0~21 X-Git-Url: http://sigrok.org/gitweb/?a=commitdiff_plain;ds=sidebyside;h=2db959063b073b87cfb45a433f2a422b594731b0;p=libsigrok.git saleae-logic16: Don't send more samples than requested. This fixes bug #350. --- diff --git a/hardware/saleae-logic16/protocol.c b/hardware/saleae-logic16/protocol.c index c7ff20c4..61700455 100644 --- a/hardware/saleae-logic16/protocol.c +++ b/hardware/saleae-logic16/protocol.c @@ -736,6 +736,14 @@ SR_PRIV void logic16_receive_transfer(struct libusb_transfer *transfer) transfer->actual_length); if (converted_length > 0) { + /* Cap sample count if needed */ + if (devc->limit_samples && + (uint64_t)devc->num_samples + converted_length / 2 + > devc->limit_samples) { + converted_length = + (devc->limit_samples - devc->num_samples) * 2; + } + /* Send the incoming transfer to the session bus. */ packet.type = SR_DF_LOGIC; packet.payload = &logic; @@ -746,7 +754,7 @@ SR_PRIV void logic16_receive_transfer(struct libusb_transfer *transfer) devc->num_samples += converted_length / 2; if (devc->limit_samples && - (uint64_t)devc->num_samples > devc->limit_samples) { + (uint64_t)devc->num_samples >= devc->limit_samples) { devc->num_samples = -2; free_transfer(transfer); return;