adb: avoid sign extension of shell return code.

Windows has int32_t return codes, which results in return codes 128-255
being sign extended into a negative number. Manually truncate the return
codes we get to preserve their values.

Test: test_device.py on windows
Change-Id: If41d6d469350301704f6ecff72ad17b412db3e04
This commit is contained in:
Josh Gao 2019-03-15 14:49:25 -07:00
parent eecd5cc532
commit 1e1ae45a8c

View file

@ -295,7 +295,10 @@ int read_and_dump(int fd, bool use_shell_protocol = false,
callback->OnStderr(buffer_ptr, length);
break;
case ShellProtocol::kIdExit:
exit_code = protocol->data()[0];
// data() returns a char* which doesn't have defined signedness.
// Cast to uint8_t to prevent 255 from being sign extended to INT_MIN,
// which doesn't get truncated on Windows.
exit_code = static_cast<uint8_t>(protocol->data()[0]);
continue;
default:
continue;