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