diff options
Diffstat (limited to 'libs/binder/Parcel.cpp')
| -rw-r--r-- | libs/binder/Parcel.cpp | 14 | 
1 files changed, 10 insertions, 4 deletions
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 753d5b4698..afa3d33349 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -2835,10 +2835,16 @@ status_t Parcel::continueWrite(size_t desired)                  }                  release_object(proc, *flat, this, &mOpenAshmemSize);              } -            binder_size_t* objects = -                (binder_size_t*)realloc(mObjects, objectsSize*sizeof(binder_size_t)); -            if (objects) { -                mObjects = objects; + +            if (objectsSize == 0) { +                free(mObjects); +                mObjects = nullptr; +            } else { +                binder_size_t* objects = +                    (binder_size_t*)realloc(mObjects, objectsSize*sizeof(binder_size_t)); +                if (objects) { +                    mObjects = objects; +                }              }              mObjectsSize = objectsSize;              mNextObjectHint = 0;  |