OSDN Git Service

Fix allocation count
authorColin Cross <ccross@android.com>
Wed, 9 Dec 2015 01:15:50 +0000 (17:15 -0800)
committerColin Cross <ccross@android.com>
Wed, 9 Dec 2015 01:18:12 +0000 (17:18 -0800)
The realloc case in continueWrite should not increment the counter,
the pointer passed to realloc is guaranteed to be non-NULL so the total
number of allocations will not have changed.

When realloc is called in restartWrite mData has not been checked
against NULL, increment the counter if it was NULL.

Bug: 26086286
Change-Id: I4c8af450cca1868b91793c0c5f0d8c4b4b5badbe

libs/binder/Parcel.cpp

index 9496821..2585579 100644 (file)
@@ -1963,6 +1963,9 @@ status_t Parcel::restartWrite(size_t desired)
         pthread_mutex_lock(&gParcelGlobalAllocSizeLock);
         gParcelGlobalAllocSize += desired;
         gParcelGlobalAllocSize -= mDataCapacity;
+        if (!mData) {
+            gParcelGlobalAllocCount++;
+        }
         pthread_mutex_unlock(&gParcelGlobalAllocSizeLock);
         mData = data;
         mDataCapacity = desired;
@@ -2094,7 +2097,6 @@ status_t Parcel::continueWrite(size_t desired)
                 pthread_mutex_lock(&gParcelGlobalAllocSizeLock);
                 gParcelGlobalAllocSize += desired;
                 gParcelGlobalAllocSize -= mDataCapacity;
-                gParcelGlobalAllocCount++;
                 pthread_mutex_unlock(&gParcelGlobalAllocSizeLock);
                 mData = data;
                 mDataCapacity = desired;