diff options
Diffstat (limited to 'StarsEx/DataLoader.cpp')
-rw-r--r-- | StarsEx/DataLoader.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/StarsEx/DataLoader.cpp b/StarsEx/DataLoader.cpp index 024a9b3..c5ad9bd 100644 --- a/StarsEx/DataLoader.cpp +++ b/StarsEx/DataLoader.cpp @@ -96,7 +96,7 @@ DataLoader::EnableMedia(bool enable) // +--------------------------------------------------------------------+ int -DataLoader::InsertDatafile(const char* name, int pos) +DataLoader::InsertDatafile(const char* name, Group group, int pos) { FILE* f = fopen(name, "rb"); if (!f) { @@ -110,7 +110,7 @@ DataLoader::InsertDatafile(const char* name, int pos) if (archive) delete archive; return DATAFILE_INVALID; } - DataSource* source = new ArchiveDataSource(archive); + DataSource* source = new ArchiveDataSource(archive, group); if (pos < 0) sources.append(source); else @@ -121,7 +121,11 @@ DataLoader::InsertDatafile(const char* name, int pos) void DataLoader::ClearSources() { - sources.destroy(); + ListIter<DataSource> iter = sources; + while (++iter) { + if (iter.value()->GetGroup() != Group::BASE) + delete iter.removeItem(); + } } // +--------------------------------------------------------------------+ |