summaryrefslogtreecommitdiff
path: root/tools/aapt2/io/ZipArchive.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/aapt2/io/ZipArchive.cpp')
-rw-r--r--tools/aapt2/io/ZipArchive.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/aapt2/io/ZipArchive.cpp b/tools/aapt2/io/ZipArchive.cpp
index 8e6d7137640a..427dc92505d4 100644
--- a/tools/aapt2/io/ZipArchive.cpp
+++ b/tools/aapt2/io/ZipArchive.cpp
@@ -33,6 +33,11 @@ ZipFile::ZipFile(ZipArchiveHandle handle, const ZipEntry& entry,
: zip_handle_(handle), zip_entry_(entry), source_(source) {}
std::unique_ptr<IData> ZipFile::OpenAsData() {
+ // The file will fail to be mmaped if it is empty
+ if (zip_entry_.uncompressed_length == 0) {
+ return util::make_unique<EmptyData>();
+ }
+
if (zip_entry_.method == kCompressStored) {
int fd = GetFileDescriptor(zip_handle_);
@@ -154,6 +159,13 @@ std::unique_ptr<IFileCollectionIterator> ZipFileCollection::Iterator() {
return util::make_unique<ZipFileCollectionIterator>(this);
}
+char ZipFileCollection::GetDirSeparator() {
+ // According to the zip file specification, section 4.4.17.1:
+ // "All slashes MUST be forward slashes '/' as opposed to backwards slashes '\' for compatibility
+ // with Amiga and UNIX file systems etc."
+ return '/';
+}
+
ZipFileCollection::~ZipFileCollection() {
if (handle_) {
CloseArchive(handle_);