USB HAL: Fix infinite loop.
Bug: 35726475
Test: usb-service no longer consumes 100% CPU
Change-Id: I274caec45e7527cbacf57f9a735d711dcb481bfd
diff --git a/usb/1.0/default/Usb.cpp b/usb/1.0/default/Usb.cpp
index f46ff66..174e3c5 100644
--- a/usb/1.0/default/Usb.cpp
+++ b/usb/1.0/default/Usb.cpp
@@ -172,17 +172,22 @@
ports++;
}
}
+
+ if (ports == 0) {
+ closedir(dp);
+ return Status::SUCCESS;
+ }
+
names.resize(ports);
rewinddir(dp);
while ((ep = readdir (dp))) {
- /* Check to see if new ports were added since the first pass. */
- if (current >= ports) {
- rewinddir(dp);
- goto rescan;
- }
-
if (ep->d_type == DT_LNK) {
+ /* Check to see if new ports were added since the first pass. */
+ if (current >= ports) {
+ rewinddir(dp);
+ goto rescan;
+ }
names[current++] = ep->d_name;
}
}
@@ -234,7 +239,7 @@
if (result == Status::SUCCESS) {
currentPortStatus.resize(names.size());
- for(std::vector<std::string>::size_type i = 0; i != names.size(); i++) {
+ for(std::vector<std::string>::size_type i = 0; i < names.size(); i++) {
ALOGI("%s", names[i].c_str());
currentPortStatus[i].portName = names[i];