diff options
author | 2009-02-10 15:44:00 -0800 | |
---|---|---|
committer | 2009-02-10 15:44:00 -0800 | |
commit | a6938bab1f6fa76ae98ebbe44f4e534e05fa0993 (patch) | |
tree | bc5a1f806bd06db8abb197e80be9ead3644c0bcc /libs/utils/Parcel.cpp | |
parent | e41dd756db5184519f4dacbf4d95b333822605c7 (diff) |
auto import from //branches/cupcake/...@130745
Diffstat (limited to 'libs/utils/Parcel.cpp')
-rw-r--r-- | libs/utils/Parcel.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/libs/utils/Parcel.cpp b/libs/utils/Parcel.cpp index 0eba0b07c8..0f4b647300 100644 --- a/libs/utils/Parcel.cpp +++ b/libs/utils/Parcel.cpp @@ -658,15 +658,20 @@ status_t Parcel::writeNativeHandle(const native_handle& handle) status_t err; err = writeInt32(handle.numFds); if (err != NO_ERROR) return err; - + err = writeInt32(handle.numInts); if (err != NO_ERROR) return err; - + for (int i=0 ; err==NO_ERROR && i<handle.numFds ; i++) err = writeDupFileDescriptor(handle.data[i]); - + + if (err != NO_ERROR) { + LOGD("write native handle, write dup fd failed"); + return err; + } + err = write(handle.data + handle.numFds, sizeof(int)*handle.numInts); - + return err; } @@ -947,7 +952,7 @@ native_handle* Parcel::readNativeHandle(native_handle* (*alloc)(void*, int, int) } for (int i=0 ; err==NO_ERROR && i<numFds ; i++) { - h->data[i] = readFileDescriptor(); + h->data[i] = dup(readFileDescriptor()); if (h->data[i] < 0) err = BAD_VALUE; } |