Merge "Memory leak in parsePackage"

This commit is contained in:
Narayan Kamath
2014-06-24 14:16:04 +00:00
committed by Gerrit Code Review

View File

@@ -5405,23 +5405,33 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg,
return (mError=err); return (mError=err);
} }
//printf("Adding new package id %d at index %d\n", id, idx); err = group->packages.add(package);
err = mPackageGroups.add(group);
if (err < NO_ERROR) { if (err < NO_ERROR) {
delete group;
delete package;
return (mError=err); return (mError=err);
} }
group->basePackage = package; group->basePackage = package;
//printf("Adding new package id %d at index %d\n", id, idx);
err = mPackageGroups.add(group);
if (err < NO_ERROR) {
delete group;
return (mError=err);
}
mPackageMap[id] = (uint8_t)idx; mPackageMap[id] = (uint8_t)idx;
} else { } else {
group = mPackageGroups.itemAt(idx-1); group = mPackageGroups.itemAt(idx-1);
if (group == NULL) { if (group == NULL) {
delete package;
return (mError=UNKNOWN_ERROR); return (mError=UNKNOWN_ERROR);
} }
} err = group->packages.add(package);
err = group->packages.add(package); if (err < NO_ERROR) {
if (err < NO_ERROR) { delete package;
return (mError=err); return (mError=err);
}
} }
} else { } else {
LOG_ALWAYS_FATAL("Package id out of range"); LOG_ALWAYS_FATAL("Package id out of range");