diff options
author | 2009-05-27 14:34:50 -0700 | |
---|---|---|
committer | 2009-05-27 14:34:50 -0700 | |
commit | 2da99bdaa1712f00525e6a84b58044332cb1baef (patch) | |
tree | ed330500de06dc645769ea87372fb624390b52a8 /libs/binder/Parcel.cpp | |
parent | 947f4f4d384ea26eb2145cc070a3eed42c59534a (diff) | |
parent | cc77841f643751fd9f128e90f7d1587445ef353e (diff) |
Merge commit 'goog/master' into merge_master
Conflicts:
include/ui/Rect.h
libs/ui/ISurfaceComposer.cpp
Diffstat (limited to 'libs/binder/Parcel.cpp')
-rw-r--r-- | libs/binder/Parcel.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 0819c29154c4..f40e4bdc3e02 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -409,12 +409,16 @@ status_t Parcel::appendFrom(Parcel *parcel, size_t offset, size_t len) mObjects[idx++] = off; mObjectsSize++; - const flat_binder_object* flat + flat_binder_object* flat = reinterpret_cast<flat_binder_object*>(mData + off); acquire_object(proc, *flat, this); - // take note if the object is a file descriptor if (flat->type == BINDER_TYPE_FD) { + // If this is a file descriptor, we need to dup it so the + // new Parcel now owns its own fd, and can declare that we + // officially know we have fds. + flat->handle = dup(flat->handle); + flat->cookie = (void*)1; mHasFds = mFdsKnown = true; } } @@ -437,9 +441,14 @@ status_t Parcel::writeInterfaceToken(const String16& interface) return writeString16(interface); } +bool Parcel::checkInterface(IBinder* binder) const +{ + return enforceInterface(binder->getInterfaceDescriptor()); +} + bool Parcel::enforceInterface(const String16& interface) const { - String16 str = readString16(); + const String16 str(readString16()); if (str == interface) { return true; } else { |