ElfFile* ElfDecoder::get_elf_file(const char* filepath) {
  ElfFile* file;

  file = _opened_elf_files;
  while (file != NULL) {
    if (file->same_elf_file(filepath)) {
      return file;
    }
    file = file->next();
  }

  file = new (std::nothrow)ElfFile(filepath);
  if (file != NULL) {
    if (_opened_elf_files != NULL) {
      file->set_next(_opened_elf_files);
    }
    _opened_elf_files = file;
  }

  return file;
}
Пример #2
0
ElfFile* Decoder::get_elf_file(const char* filepath) {
  if (_decoder_status != no_error) {
    return NULL;
  }
  ElfFile* file = _opened_elf_files;
  while (file != NULL) {
    if (file->same_elf_file(filepath)) {
      return file;
    }
    file = file->m_next;
  }

  file = new ElfFile(filepath);
  if (file == NULL) {
    _decoder_status = out_of_memory;
  }
  if (_opened_elf_files != NULL) {
    file->m_next = _opened_elf_files;
  }

  _opened_elf_files = file;
  return file;
}