A simpler approach would probably be to use a `std::set<std::string>` to do the duplicate check.

If you're worried about clearing the duplicates this will leave behind at the end of the list, I suggest looking here:

```c++
		for (int i = 0; i < (int)recentIsos.size(); i++)
		{
			char keyName[64];

			sprintf(keyName,"FileName%d",i);
			recent->Set(keyName,recentIsos[i]);
		}
```

Change to e.g.:```c++
		for (int i = 0; i < iMaxRecent; i++)
		{
			char keyName[64];
			sprintf(keyName,"FileName%d",i);

			std::string value = "";
			if (i < recentIsos.size())
				value = recentIsos[i]
			recent->Set(keyName, value);
		}
```

-[Unknown]