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

Commit c645e732 authored by Adam Lesinski's avatar Adam Lesinski Committed by android-build-merger
Browse files

Merge "AAPT2: Fix order-of-destruction crash" into oc-dev am: 62b713ed

am: 2fc8adc5

Change-Id: Ic723218e00e8eea1305bb47083bc056816c6f1a3
parents 58c5d5ab 2fc8adc5
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -377,8 +377,8 @@ bool ResourceFileFlattener::LinkAndVersionXmlFile(ResourceTable* table, FileOper
        versioned_file_desc.config.sdkVersion = (uint16_t)sdk_level;

        FileOperation new_file_op;
        new_file_op.xml_to_flatten =
            util::make_unique<xml::XmlResource>(versioned_file_desc, doc->root->Clone());
        new_file_op.xml_to_flatten = util::make_unique<xml::XmlResource>(
            versioned_file_desc, StringPool{}, doc->root->Clone());
        new_file_op.config = versioned_file_desc.config;
        new_file_op.entry = file_op->entry;
        new_file_op.dst_path =
+3 −2
Original line number Diff line number Diff line
@@ -224,7 +224,8 @@ std::unique_ptr<XmlResource> Inflate(std::istream* in, IDiagnostics* diag, const

  XML_ParserFree(parser);
  if (stack.root) {
    return util::make_unique<XmlResource>(ResourceFile{{}, {}, source}, std::move(stack.root));
    return util::make_unique<XmlResource>(ResourceFile{{}, {}, source}, StringPool{},
                                          std::move(stack.root));
  }
  return {};
}
@@ -357,7 +358,7 @@ std::unique_ptr<XmlResource> Inflate(const void* data, size_t data_len, IDiagnos
      }
    }
  }
  return util::make_unique<XmlResource>(ResourceFile{}, std::move(root), std::move(string_pool));
  return util::make_unique<XmlResource>(ResourceFile{}, std::move(string_pool), std::move(root));
}

std::unique_ptr<Node> Namespace::Clone() {
+6 −1
Original line number Diff line number Diff line
@@ -128,8 +128,13 @@ class Text : public BaseNode<Text> {
class XmlResource {
 public:
  ResourceFile file;
  std::unique_ptr<xml::Node> root;

  // StringPool must come before the xml::Node. Destructors are called in reverse order, and
  // the xml::Node may have StringPool references that need to be destroyed before the StringPool
  // is destroyed.
  StringPool string_pool;

  std::unique_ptr<xml::Node> root;
};

/**