platforms: nuttx: SerialImpl: fix poll timeout and integer underflow (#23248)

* platforms: nuttx: SerialImpl: fix poll timeout

* platforms: posix: SerialImpl: fix poll timeout
This commit is contained in:
Jacob Dahl 2024-06-14 17:43:15 -08:00 committed by GitHub
parent 4fe0bb4762
commit fcb479cd3d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 6 deletions

View File

@ -272,11 +272,11 @@ ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t char
fds[0].fd = _serial_fd;
fds[0].events = POLLIN;
hrt_abstime remaining_time = timeout_us - hrt_elapsed_time(&start_time_us);
hrt_abstime elapsed_time_us = hrt_elapsed_time(&start_time_us);
if (remaining_time <= 0) { break; }
if (elapsed_time_us > timeout_us) { break; }
int ret = poll(fds, sizeof(fds) / sizeof(fds[0]), remaining_time);
int ret = poll(fds, sizeof(fds) / sizeof(fds[0]), (timeout_us - elapsed_time_us) / 1000);
if (ret > 0) {
if (fds[0].revents & POLLIN) {

View File

@ -265,11 +265,11 @@ ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t char
fds[0].fd = _serial_fd;
fds[0].events = POLLIN;
hrt_abstime remaining_time = timeout_us - hrt_elapsed_time(&start_time_us);
hrt_abstime elapsed_time_us = hrt_elapsed_time(&start_time_us);
if (remaining_time <= 0) { break; }
if (elapsed_time_us > timeout_us) { break; }
int ret = poll(fds, sizeof(fds) / sizeof(fds[0]), remaining_time);
int ret = poll(fds, sizeof(fds) / sizeof(fds[0]), (timeout_us - elapsed_time_us) / 1000);
if (ret > 0) {
if (fds[0].revents & POLLIN) {