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

Commit 6832a7a4 authored by Narayan Kamath's avatar Narayan Kamath
Browse files

Remove useless refCounting from FileMap.

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
parent f1ac6917
Loading
Loading
Loading
Loading
+2 −16
Original line number Diff line number Diff line
@@ -63,6 +63,8 @@ public:
    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.
     */
@@ -83,19 +85,6 @@ public:
     */
    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.
@@ -112,15 +101,12 @@ public:
    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"
+1 −7
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ 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)
{
}
@@ -56,11 +56,6 @@ FileMap::FileMap(void)
// 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);
    }
@@ -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);
+2 −4
Original line number Diff line number Diff line
@@ -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;
    }
@@ -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.
+3 −5
Original line number Diff line number Diff line
@@ -321,9 +321,7 @@ struct ZipArchive {
      close(fd);
    }

    if (directory_map != NULL) {
      directory_map->release();
    }
    delete directory_map;
    free(hash_table);
  }
};
@@ -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;
  }

@@ -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;
}