Merge "Change call to mmap64." into rvc-dev
This commit is contained in:
commit
99dfe5ebba
2 changed files with 21 additions and 1 deletions
|
|
@ -195,7 +195,7 @@ bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t le
|
||||||
int prot = PROT_READ;
|
int prot = PROT_READ;
|
||||||
if (!readOnly) prot |= PROT_WRITE;
|
if (!readOnly) prot |= PROT_WRITE;
|
||||||
|
|
||||||
void* ptr = mmap(nullptr, adjLength, prot, flags, fd, adjOffset);
|
void* ptr = mmap64(nullptr, adjLength, prot, flags, fd, adjOffset);
|
||||||
if (ptr == MAP_FAILED) {
|
if (ptr == MAP_FAILED) {
|
||||||
if (errno == EINVAL && length == 0) {
|
if (errno == EINVAL && length == 0) {
|
||||||
ptr = nullptr;
|
ptr = nullptr;
|
||||||
|
|
|
||||||
|
|
@ -32,3 +32,23 @@ TEST(FileMap, zero_length_mapping) {
|
||||||
ASSERT_EQ(0u, m.getDataLength());
|
ASSERT_EQ(0u, m.getDataLength());
|
||||||
ASSERT_EQ(4096, m.getDataOffset());
|
ASSERT_EQ(4096, m.getDataOffset());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(FileMap, large_offset) {
|
||||||
|
// Make sure that an offset > INT32_MAX will not fail the create
|
||||||
|
// function. See http://b/155662887.
|
||||||
|
TemporaryFile tf;
|
||||||
|
ASSERT_TRUE(tf.fd != -1);
|
||||||
|
|
||||||
|
off64_t offset = INT32_MAX + 1024LL;
|
||||||
|
|
||||||
|
// Make the temporary file large enough to pass the mmap.
|
||||||
|
ASSERT_EQ(offset, lseek64(tf.fd, offset, SEEK_SET));
|
||||||
|
char value = 0;
|
||||||
|
ASSERT_EQ(1, write(tf.fd, &value, 1));
|
||||||
|
|
||||||
|
android::FileMap m;
|
||||||
|
ASSERT_TRUE(m.create("test", tf.fd, offset, 0, true));
|
||||||
|
ASSERT_STREQ("test", m.getFileName());
|
||||||
|
ASSERT_EQ(0u, m.getDataLength());
|
||||||
|
ASSERT_EQ(offset, m.getDataOffset());
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue