diff options
| -rw-r--r-- | libs/binder/Parcel.cpp | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index d2904073e1..9bba369ee4 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -2503,19 +2503,15 @@ size_t Parcel::ipcObjectsCount() const void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize, const binder_size_t* objects, size_t objectsCount, release_func relFunc) { - binder_size_t minOffset = 0; - freeDataNoInit(); - mError = NO_ERROR; + freeData(); + mData = const_cast<uint8_t*>(data); mDataSize = mDataCapacity = dataSize; - //ALOGI("setDataReference Setting data size of %p to %lu (pid=%d)", this, mDataSize, getpid()); - mDataPos = 0; - ALOGV("setDataReference Setting data pos of %p to %zu", this, mDataPos); mObjects = const_cast<binder_size_t*>(objects); mObjectsSize = mObjectsCapacity = objectsCount; - mNextObjectHint = 0; - mObjectsSorted = false; mOwner = relFunc; + + binder_size_t minOffset = 0; for (size_t i = 0; i < mObjectsSize; i++) { binder_size_t offset = mObjects[i]; if (offset < minOffset) { |