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

Commit cbcff740 authored by Ryan Prichard's avatar Ryan Prichard
Browse files

aapt2: fix dangling reference to diag

The lambdas that ManifestFixer::BuildRules attach to XmlActionExecutor
outlive ManifestFixer::BuildRules, so they need to capture diag
by-value instead of by-reference.

Bug: 339119172
Test: aapt2_tests
Change-Id: I6b9b6a8733875247a5be12111413b45b99727e1f
parent 8b70a2c6
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -441,7 +441,7 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, android::IDiagn
  manifest_action.Action(AutoGenerateIsSplitRequired);
  manifest_action.Action(VerifyManifest);
  manifest_action.Action(FixCoreAppAttribute);
  manifest_action.Action([&](xml::Element* el) -> bool {
  manifest_action.Action([this, diag](xml::Element* el) -> bool {
    EnsureNamespaceIsDeclared("android", xml::kSchemaAndroid, &el->namespace_decls);

    if (options_.version_name_default) {
@@ -504,7 +504,7 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, android::IDiagn
  manifest_action["eat-comment"];

  // Uses-sdk actions.
  manifest_action["uses-sdk"].Action([&](xml::Element* el) -> bool {
  manifest_action["uses-sdk"].Action([this](xml::Element* el) -> bool {
    if (options_.min_sdk_version_default &&
        el->FindAttribute(xml::kSchemaAndroid, "minSdkVersion") == nullptr) {
      // There was no minSdkVersion defined and we have a default to assign.
@@ -526,7 +526,7 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, android::IDiagn

  // Instrumentation actions.
  manifest_action["instrumentation"].Action(RequiredNameIsJavaClassName);
  manifest_action["instrumentation"].Action([&](xml::Element* el) -> bool {
  manifest_action["instrumentation"].Action([this](xml::Element* el) -> bool {
    if (!options_.rename_instrumentation_target_package) {
      return true;
    }
@@ -542,7 +542,7 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, android::IDiagn
  manifest_action["attribution"];
  manifest_action["attribution"]["inherit-from"];
  manifest_action["original-package"];
  manifest_action["overlay"].Action([&](xml::Element* el) -> bool {
  manifest_action["overlay"].Action([this](xml::Element* el) -> bool {
    if (options_.rename_overlay_target_package) {
      if (xml::Attribute* attr = el->FindAttribute(xml::kSchemaAndroid, "targetPackage")) {
        attr->value = options_.rename_overlay_target_package.value();
@@ -623,7 +623,7 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, android::IDiagn
  uses_package_action["additional-certificate"];

  if (options_.debug_mode) {
    application_action.Action([&](xml::Element* el) -> bool {
    application_action.Action([](xml::Element* el) -> bool {
      xml::Attribute *attr = el->FindOrCreateAttribute(xml::kSchemaAndroid, "debuggable");
      attr->value = "true";
      return true;