saleae-logic16: Don't send more samples than requested.
This fixes bug #350.
This commit is contained in:
parent
831d7c70eb
commit
2db959063b
|
@ -736,6 +736,14 @@ SR_PRIV void logic16_receive_transfer(struct libusb_transfer *transfer)
|
||||||
transfer->actual_length);
|
transfer->actual_length);
|
||||||
|
|
||||||
if (converted_length > 0) {
|
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. */
|
/* Send the incoming transfer to the session bus. */
|
||||||
packet.type = SR_DF_LOGIC;
|
packet.type = SR_DF_LOGIC;
|
||||||
packet.payload = &logic;
|
packet.payload = &logic;
|
||||||
|
@ -746,7 +754,7 @@ SR_PRIV void logic16_receive_transfer(struct libusb_transfer *transfer)
|
||||||
|
|
||||||
devc->num_samples += converted_length / 2;
|
devc->num_samples += converted_length / 2;
|
||||||
if (devc->limit_samples &&
|
if (devc->limit_samples &&
|
||||||
(uint64_t)devc->num_samples > devc->limit_samples) {
|
(uint64_t)devc->num_samples >= devc->limit_samples) {
|
||||||
devc->num_samples = -2;
|
devc->num_samples = -2;
|
||||||
free_transfer(transfer);
|
free_transfer(transfer);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue