Use if-let rather than unwrapping.
Bug: 243500154
Test: atest libinherited_fd.test
Change-Id: I040078abb1507d413f8ce6c91ae3a69c369bd3ae
diff --git a/libs/libinherited_fd/src/lib.rs b/libs/libinherited_fd/src/lib.rs
index 709bac6..f5e2d6b 100644
--- a/libs/libinherited_fd/src/lib.rs
+++ b/libs/libinherited_fd/src/lib.rs
@@ -97,14 +97,15 @@
pub fn take_fd_ownership(raw_fd: RawFd) -> Result<OwnedFd, Error> {
let mut fds = INHERITED_FDS.get().ok_or(Error::NotInitialized)?.lock().unwrap();
- match fds.get_mut(&raw_fd) {
- None => Err(Error::FileDescriptorNotInherited(raw_fd)),
- Some(None) => Err(Error::OwnershipTaken(raw_fd)),
- Some(owned_fd) => {
- let owned_fd = owned_fd.take().unwrap();
+ if let Some(value) = fds.get_mut(&raw_fd) {
+ if let Some(owned_fd) = value.take() {
fcntl(raw_fd, F_SETFD(FdFlag::FD_CLOEXEC)).or(Err(Error::FailCloseOnExec(raw_fd)))?;
Ok(owned_fd)
+ } else {
+ Err(Error::OwnershipTaken(raw_fd))
}
+ } else {
+ Err(Error::FileDescriptorNotInherited(raw_fd))
}
}