Merge "Fix memory leak in MultiStateCounter" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4b086b73e3
@@ -111,17 +111,17 @@ static void native_writeToParcel(JNIEnv *env, jobject self, jlong nativePtr, job
|
|||||||
jint flags) {
|
jint flags) {
|
||||||
battery::LongArrayMultiStateCounter *counter =
|
battery::LongArrayMultiStateCounter *counter =
|
||||||
reinterpret_cast<battery::LongArrayMultiStateCounter *>(nativePtr);
|
reinterpret_cast<battery::LongArrayMultiStateCounter *>(nativePtr);
|
||||||
AParcel *parcel = AParcel_fromJavaParcel(env, jParcel);
|
ndk::ScopedAParcel parcel(AParcel_fromJavaParcel(env, jParcel));
|
||||||
|
|
||||||
uint16_t stateCount = counter->getStateCount();
|
uint16_t stateCount = counter->getStateCount();
|
||||||
THROW_ON_WRITE_ERROR(AParcel_writeInt32(parcel, stateCount));
|
THROW_ON_WRITE_ERROR(AParcel_writeInt32(parcel.get(), stateCount));
|
||||||
|
|
||||||
// LongArrayMultiStateCounter has at least state 0
|
// LongArrayMultiStateCounter has at least state 0
|
||||||
const std::vector<uint64_t> &anyState = counter->getCount(0);
|
const std::vector<uint64_t> &anyState = counter->getCount(0);
|
||||||
THROW_ON_WRITE_ERROR(AParcel_writeInt32(parcel, anyState.size()));
|
THROW_ON_WRITE_ERROR(AParcel_writeInt32(parcel.get(), anyState.size()));
|
||||||
|
|
||||||
for (battery::state_t state = 0; state < stateCount; state++) {
|
for (battery::state_t state = 0; state < stateCount; state++) {
|
||||||
THROW_ON_WRITE_ERROR(ndk::AParcel_writeVector(parcel, counter->getCount(state)));
|
THROW_ON_WRITE_ERROR(ndk::AParcel_writeVector(parcel.get(), counter->getCount(state)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,13 +139,13 @@ static void throwReadRE(JNIEnv *env, binder_status_t status) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static jlong native_initFromParcel(JNIEnv *env, jclass theClass, jobject jParcel) {
|
static jlong native_initFromParcel(JNIEnv *env, jclass theClass, jobject jParcel) {
|
||||||
AParcel *parcel = AParcel_fromJavaParcel(env, jParcel);
|
ndk::ScopedAParcel parcel(AParcel_fromJavaParcel(env, jParcel));
|
||||||
|
|
||||||
int32_t stateCount;
|
int32_t stateCount;
|
||||||
THROW_ON_READ_ERROR(AParcel_readInt32(parcel, &stateCount));
|
THROW_ON_READ_ERROR(AParcel_readInt32(parcel.get(), &stateCount));
|
||||||
|
|
||||||
int32_t arrayLength;
|
int32_t arrayLength;
|
||||||
THROW_ON_READ_ERROR(AParcel_readInt32(parcel, &arrayLength));
|
THROW_ON_READ_ERROR(AParcel_readInt32(parcel.get(), &arrayLength));
|
||||||
|
|
||||||
battery::LongArrayMultiStateCounter *counter =
|
battery::LongArrayMultiStateCounter *counter =
|
||||||
new battery::LongArrayMultiStateCounter(stateCount, std::vector<uint64_t>(arrayLength));
|
new battery::LongArrayMultiStateCounter(stateCount, std::vector<uint64_t>(arrayLength));
|
||||||
@@ -154,7 +154,7 @@ static jlong native_initFromParcel(JNIEnv *env, jclass theClass, jobject jParcel
|
|||||||
value.reserve(arrayLength);
|
value.reserve(arrayLength);
|
||||||
|
|
||||||
for (battery::state_t state = 0; state < stateCount; state++) {
|
for (battery::state_t state = 0; state < stateCount; state++) {
|
||||||
THROW_ON_READ_ERROR(ndk::AParcel_readVector(parcel, &value));
|
THROW_ON_READ_ERROR(ndk::AParcel_readVector(parcel.get(), &value));
|
||||||
counter->setValue(state, value);
|
counter->setValue(state, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -120,13 +120,13 @@ static void throwWriteRE(JNIEnv *env, binder_status_t status) {
|
|||||||
static void native_writeToParcel(JNIEnv *env, jobject self, jlong nativePtr, jobject jParcel,
|
static void native_writeToParcel(JNIEnv *env, jobject self, jlong nativePtr, jobject jParcel,
|
||||||
jint flags) {
|
jint flags) {
|
||||||
battery::LongMultiStateCounter *counter = asLongMultiStateCounter(nativePtr);
|
battery::LongMultiStateCounter *counter = asLongMultiStateCounter(nativePtr);
|
||||||
AParcel *parcel = AParcel_fromJavaParcel(env, jParcel);
|
ndk::ScopedAParcel parcel(AParcel_fromJavaParcel(env, jParcel));
|
||||||
|
|
||||||
uint16_t stateCount = counter->getStateCount();
|
uint16_t stateCount = counter->getStateCount();
|
||||||
THROW_ON_WRITE_ERROR(AParcel_writeInt32(parcel, stateCount));
|
THROW_ON_WRITE_ERROR(AParcel_writeInt32(parcel.get(), stateCount));
|
||||||
|
|
||||||
for (battery::state_t state = 0; state < stateCount; state++) {
|
for (battery::state_t state = 0; state < stateCount; state++) {
|
||||||
THROW_ON_WRITE_ERROR(AParcel_writeInt64(parcel, counter->getCount(state)));
|
THROW_ON_WRITE_ERROR(AParcel_writeInt64(parcel.get(), counter->getCount(state)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,16 +144,16 @@ static void throwReadRE(JNIEnv *env, binder_status_t status) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static jlong native_initFromParcel(JNIEnv *env, jclass theClass, jobject jParcel) {
|
static jlong native_initFromParcel(JNIEnv *env, jclass theClass, jobject jParcel) {
|
||||||
AParcel *parcel = AParcel_fromJavaParcel(env, jParcel);
|
ndk::ScopedAParcel parcel(AParcel_fromJavaParcel(env, jParcel));
|
||||||
|
|
||||||
int32_t stateCount;
|
int32_t stateCount;
|
||||||
THROW_ON_READ_ERROR(AParcel_readInt32(parcel, &stateCount));
|
THROW_ON_READ_ERROR(AParcel_readInt32(parcel.get(), &stateCount));
|
||||||
|
|
||||||
battery::LongMultiStateCounter *counter = new battery::LongMultiStateCounter(stateCount, 0);
|
battery::LongMultiStateCounter *counter = new battery::LongMultiStateCounter(stateCount, 0);
|
||||||
|
|
||||||
for (battery::state_t state = 0; state < stateCount; state++) {
|
for (battery::state_t state = 0; state < stateCount; state++) {
|
||||||
int64_t value;
|
int64_t value;
|
||||||
THROW_ON_READ_ERROR(AParcel_readInt64(parcel, &value));
|
THROW_ON_READ_ERROR(AParcel_readInt64(parcel.get(), &value));
|
||||||
counter->setValue(state, value);
|
counter->setValue(state, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user