summaryrefslogtreecommitdiff
path: root/src/tar_type.h
diff options
context:
space:
mode:
authorMichael Lutz <michi@icosahedron.de>2020-12-06 21:11:50 +0100
committerMichael Lutz <michi@icosahedron.de>2020-12-27 13:19:25 +0100
commitb408fe77f792650ef569f9852165759f960fd52f (patch)
tree6d1f0a134da31bd1d53dee052721d78955d688e6 /src/tar_type.h
parent358056ec428d1938b8c9219a60c6fb400115f152 (diff)
downloadopenttd-b408fe77f792650ef569f9852165759f960fd52f.tar.xz
Codechange: Use std::string in file scanners.
Diffstat (limited to 'src/tar_type.h')
-rw-r--r--src/tar_type.h18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/tar_type.h b/src/tar_type.h
index e428bc249..c4e72df85 100644
--- a/src/tar_type.h
+++ b/src/tar_type.h
@@ -12,30 +12,20 @@
#include <map>
#include <string>
+#include <array>
#include "fileio_type.h"
-/** The define of a TarList. */
-struct TarListEntry {
- const char *filename;
- const char *dirname;
-
- /* MSVC goes copying around this struct after initialisation, so it tries
- * to free filename, which isn't set at that moment... but because it
- * initializes the variable with garbage, it's going to segfault. */
- TarListEntry() : filename(nullptr), dirname(nullptr) {}
- ~TarListEntry() { free(this->filename); free(this->dirname); }
-};
struct TarFileListEntry {
- const char *tar_filename;
+ std::string tar_filename;
size_t size;
size_t position;
};
-typedef std::map<std::string, TarListEntry> TarList;
+typedef std::map<std::string, std::string> TarList; ///< Map of tar file to tar directory.
typedef std::map<std::string, TarFileListEntry> TarFileList;
-extern TarList _tar_list[NUM_SUBDIRS];
+extern std::array<TarList, NUM_SUBDIRS> _tar_list;
extern TarFileList _tar_filelist[NUM_SUBDIRS];
#define FOR_ALL_TARS(tar, sd) for (tar = _tar_filelist[sd].begin(); tar != _tar_filelist[sd].end(); tar++)