Flash* FlashManager::load(string name, string path) { // find if already loaded map<string, Flash*>::iterator findItor = configs.find(name); if(findItor != configs.end()) { Flash* previous = findItor->second; // if config has already loaded if(previous->getPath() == path) { return previous; } else { configs.erase(findItor); delete previous; } } Flash* flash = loader->load(path); if(flash == 0) { return 0; } // save the newly loaded config flash->setPath(path); configs.insert(map<string, Flash*>::value_type(name, flash)); return flash; }