Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5f7ce10c authored by Henrik Baard's avatar Henrik Baard
Browse files

Memory leak in parsePackage

The method parsePackage failes to delete some resources
in case of failures.

Added delete of "package" in the cases that was previously
missed.

Change-Id: I183e9ec5864c5ed18bb48410ab41317cb3d96bda
parent 1a3908e9
Loading
Loading
Loading
Loading
+15 −5
Original line number Diff line number Diff line
@@ -5405,24 +5405,34 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg,
                return (mError=err);
            }

            err = group->packages.add(package);
            if (err < NO_ERROR) {
                delete group;
                delete package;
                return (mError=err);
            }
            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);
            }
            group->basePackage = package;

            mPackageMap[id] = (uint8_t)idx;
        } else {
            group = mPackageGroups.itemAt(idx-1);
            if (group == NULL) {
                delete package;
                return (mError=UNKNOWN_ERROR);
            }
        }
            err = group->packages.add(package);
            if (err < NO_ERROR) {
                delete package;
                return (mError=err);
            }
        }
    } else {
        LOG_ALWAYS_FATAL("Package id out of range");
        return NO_ERROR;