- for (i = 0; lupfd[i]; i++) {
- GPollFD p;
-
- p.fd = lupfd[i]->fd;
- p.events = lupfd[i]->events;
- p.revents = 0;
-
- sr_session_source_add_internal(session, &p, timeout,
- cb, cb_data, p.fd, TRUE);
+ if (!lupfd || !lupfd[0]) {
+ free(lupfd);
+ sr_err("Failed to get libusb file descriptors.");
+ return SR_ERR;
+ }
+ while (lupfd[num_fds])
+ ++num_fds;
+ pollfds = g_new(GPollFD, num_fds);
+
+ for (i = 0; i < num_fds; ++i) {
+ pollfds[i].fd = lupfd[i]->fd;
+ pollfds[i].events = lupfd[i]->events;
+ pollfds[i].revents = 0;