summaryrefslogtreecommitdiff
path: root/libs/utils/Parcel.cpp
diff options
context:
space:
mode:
author The Android Open Source Project <initial-contribution@android.com> 2009-02-10 15:44:00 -0800
committer The Android Open Source Project <initial-contribution@android.com> 2009-02-10 15:44:00 -0800
commita6938bab1f6fa76ae98ebbe44f4e534e05fa0993 (patch)
treebc5a1f806bd06db8abb197e80be9ead3644c0bcc /libs/utils/Parcel.cpp
parente41dd756db5184519f4dacbf4d95b333822605c7 (diff)
auto import from //branches/cupcake/...@130745
Diffstat (limited to 'libs/utils/Parcel.cpp')
-rw-r--r--libs/utils/Parcel.cpp15
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;
}