diff options
| -rw-r--r-- | dexlayout/Android.bp | 1 | ||||
| -rw-r--r-- | dexlayout/dex_ir.cc | 6 | ||||
| -rw-r--r-- | dexlayout/dexlayout.cc | 7 |
3 files changed, 10 insertions, 4 deletions
diff --git a/dexlayout/Android.bp b/dexlayout/Android.bp index e26d051d9d..4b65c5299a 100644 --- a/dexlayout/Android.bp +++ b/dexlayout/Android.bp @@ -14,6 +14,7 @@ art_cc_defaults { name: "libart-dexlayout-defaults", + defaults: ["art_defaults"], host_supported: true, srcs: [ "dexlayout.cc", diff --git a/dexlayout/dex_ir.cc b/dexlayout/dex_ir.cc index 4905b5c2f6..6bd9da8194 100644 --- a/dexlayout/dex_ir.cc +++ b/dexlayout/dex_ir.cc @@ -496,8 +496,8 @@ AnnotationsDirectoryItem* Collections::CreateAnnotationsDirectoryItem(const DexF dex_file.GetClassAnnotationSet(disk_annotations_item); AnnotationSetItem* class_annotation = nullptr; if (class_set_item != nullptr) { - uint32_t offset = disk_annotations_item->class_annotations_off_; - class_annotation = CreateAnnotationSetItem(dex_file, class_set_item, offset); + uint32_t item_offset = disk_annotations_item->class_annotations_off_; + class_annotation = CreateAnnotationSetItem(dex_file, class_set_item, item_offset); } const DexFile::FieldAnnotationsItem* fields = dex_file.GetFieldAnnotations(disk_annotations_item); @@ -784,7 +784,7 @@ struct FileSectionDescriptor { std::function<uint32_t(const dex_ir::Collections&)> offset_fn; }; -static const std::vector<FileSectionDescriptor> kFileSectionDescriptors = { +static const FileSectionDescriptor kFileSectionDescriptors[] = { { "Header", DexFile::kDexTypeHeaderItem, diff --git a/dexlayout/dexlayout.cc b/dexlayout/dexlayout.cc index 0e0d66bd3d..344d735fa7 100644 --- a/dexlayout/dexlayout.cc +++ b/dexlayout/dexlayout.cc @@ -393,6 +393,7 @@ static std::unique_ptr<char[]> IndexString(dex_ir::Header* header, index = dec_insn->VRegB(); secondary_index = dec_insn->VRegH(); width = 4; + break; default: break; } // switch @@ -1820,7 +1821,11 @@ void DexLayout::OutputDexFile(const DexFile* dex_file) { LOG(ERROR) << "Could not create dex writer output file: " << output_location; return; } - ftruncate(new_file->Fd(), header_->FileSize()); + if (ftruncate(new_file->Fd(), header_->FileSize()) != 0) { + LOG(ERROR) << "Could not grow dex writer output file: " << output_location;; + new_file->Erase(); + return; + } mem_map_.reset(MemMap::MapFile(header_->FileSize(), PROT_READ | PROT_WRITE, MAP_SHARED, new_file->Fd(), 0, /*low_4gb*/ false, output_location.c_str(), &error_msg)); } else { |