Loading libs/binder/ndk/parcel.cpp +4 −9 Original line number Original line Diff line number Diff line Loading @@ -242,23 +242,18 @@ binder_status_t AParcel_readStrongBinder(const AParcel* parcel, AIBinder** binde } } binder_status_t AParcel_writeParcelFileDescriptor(AParcel* parcel, int fd) { binder_status_t AParcel_writeParcelFileDescriptor(AParcel* parcel, int fd) { std::unique_ptr<ParcelFileDescriptor> parcelFd; if (fd < 0) { if (fd < 0) { if (fd != -1) { if (fd != -1) { return STATUS_UNKNOWN_ERROR; return STATUS_UNKNOWN_ERROR; } } // parcelFd = nullptr return parcel->get()->writeInt32(0); // null } else { // fd >= 0 parcelFd = std::make_unique<ParcelFileDescriptor>(unique_fd(fd)); } } status_t status = parcel->get()->writeNullableParcelable(parcelFd); ParcelFileDescriptor parcelFd = ParcelFileDescriptor(unique_fd(fd)); status_t status = parcel->get()->writeParcelable(parcelFd); // ownership is retained by caller // ownership is retained by caller if (parcelFd != nullptr) { (void)parcelFd.release().release(); (void)parcelFd->release().release(); } return PruneStatusT(status); return PruneStatusT(status); } } Loading Loading
libs/binder/ndk/parcel.cpp +4 −9 Original line number Original line Diff line number Diff line Loading @@ -242,23 +242,18 @@ binder_status_t AParcel_readStrongBinder(const AParcel* parcel, AIBinder** binde } } binder_status_t AParcel_writeParcelFileDescriptor(AParcel* parcel, int fd) { binder_status_t AParcel_writeParcelFileDescriptor(AParcel* parcel, int fd) { std::unique_ptr<ParcelFileDescriptor> parcelFd; if (fd < 0) { if (fd < 0) { if (fd != -1) { if (fd != -1) { return STATUS_UNKNOWN_ERROR; return STATUS_UNKNOWN_ERROR; } } // parcelFd = nullptr return parcel->get()->writeInt32(0); // null } else { // fd >= 0 parcelFd = std::make_unique<ParcelFileDescriptor>(unique_fd(fd)); } } status_t status = parcel->get()->writeNullableParcelable(parcelFd); ParcelFileDescriptor parcelFd = ParcelFileDescriptor(unique_fd(fd)); status_t status = parcel->get()->writeParcelable(parcelFd); // ownership is retained by caller // ownership is retained by caller if (parcelFd != nullptr) { (void)parcelFd.release().release(); (void)parcelFd->release().release(); } return PruneStatusT(status); return PruneStatusT(status); } } Loading