Skip to content
This repository has been archived by the owner on Nov 8, 2023. It is now read-only.

Commit

Permalink
Remove useless refCounting from FileMap.
Browse files Browse the repository at this point in the history
Nobody ever called acquire() so release() was always
equivalent to delete. Just use delete instead so that
people can use unique_ptr directly (or shared_ptr if
they really want refcounts).

Change-Id: I9e3ad5e0f6a4fcc4e02e5a2ff7ef9514fe234415
  • Loading branch information
narayank committed Feb 23, 2015
1 parent f1ac691 commit 6832a7a
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 32 deletions.
18 changes: 2 additions & 16 deletions include/utils/FileMap.h
Expand Up @@ -63,6 +63,8 @@ class FileMap {
bool create(const char* origFileName, int fd,
off64_t offset, size_t length, bool readOnly);

~FileMap(void);

/*
* Return the name of the file this map came from, if known.
*/
Expand All @@ -83,19 +85,6 @@ class FileMap {
*/
off64_t getDataOffset(void) const { return mDataOffset; }

/*
* Get a "copy" of the object.
*/
FileMap* acquire(void) { mRefCount++; return this; }

/*
* Call this when mapping is no longer needed.
*/
void release(void) {
if (--mRefCount <= 0)
delete this;
}

/*
* This maps directly to madvise() values, but allows us to avoid
* including <sys/mman.h> everywhere.
Expand All @@ -112,15 +101,12 @@ class FileMap {
int advise(MapAdvice advice);

protected:
// don't delete objects; call release()
~FileMap(void);

private:
// these are not implemented
FileMap(const FileMap& src);
const FileMap& operator=(const FileMap& src);

int mRefCount; // reference count
char* mFileName; // original file name, if known
void* mBasePtr; // base of mmap area; page aligned
size_t mBaseLength; // length, measured from "mBasePtr"
Expand Down
8 changes: 1 addition & 7 deletions libutils/FileMap.cpp
Expand Up @@ -48,19 +48,14 @@ using namespace android;

// Constructor. Create an empty object.
FileMap::FileMap(void)
: mRefCount(1), mFileName(NULL), mBasePtr(NULL), mBaseLength(0),
: mFileName(NULL), mBasePtr(NULL), mBaseLength(0),
mDataPtr(NULL), mDataLength(0)
{
}

// Destructor.
FileMap::~FileMap(void)
{
assert(mRefCount == 0);

//printf("+++ removing FileMap %p %zu\n", mDataPtr, mDataLength);

mRefCount = -100; // help catch double-free
if (mFileName != NULL) {
free(mFileName);
}
Expand Down Expand Up @@ -134,7 +129,6 @@ bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t le

void* ptr;

assert(mRefCount == 1);
assert(fd >= 0);
assert(offset >= 0);
assert(length > 0);
Expand Down
6 changes: 2 additions & 4 deletions libutils/Tokenizer.cpp
Expand Up @@ -43,9 +43,7 @@ Tokenizer::Tokenizer(const String8& filename, FileMap* fileMap, char* buffer,
}

Tokenizer::~Tokenizer() {
if (mFileMap) {
mFileMap->release();
}
delete mFileMap;
if (mOwnBuffer) {
delete[] mBuffer;
}
Expand Down Expand Up @@ -74,7 +72,7 @@ status_t Tokenizer::open(const String8& filename, Tokenizer** outTokenizer) {
fileMap->advise(FileMap::SEQUENTIAL);
buffer = static_cast<char*>(fileMap->getDataPtr());
} else {
fileMap->release();
delete fileMap;
fileMap = NULL;

// Fall back to reading into a buffer since we can't mmap files in sysfs.
Expand Down
8 changes: 3 additions & 5 deletions libziparchive/zip_archive.cc
Expand Up @@ -321,9 +321,7 @@ struct ZipArchive {
close(fd);
}

if (directory_map != NULL) {
directory_map->release();
}
delete directory_map;
free(hash_table);
}
};
Expand All @@ -335,7 +333,7 @@ static android::FileMap* MapFileSegment(const int fd, const off64_t start,
android::FileMap* file_map = new android::FileMap;
const bool success = file_map->create(debug_file_name, fd, start, length, read_only);
if (!success) {
file_map->release();
delete file_map;
return NULL;
}

Expand Down Expand Up @@ -1170,7 +1168,7 @@ int32_t ExtractEntryToFile(ZipArchiveHandle handle,
const int32_t error = ExtractToMemory(handle, entry,
reinterpret_cast<uint8_t*>(map->getDataPtr()),
map->getDataLength());
map->release();
delete map;
return error;
}

Expand Down

0 comments on commit 6832a7a

Please sign in to comment.