diff options
-rw-r--r-- | src/fileio.cpp | 13 | ||||
-rw-r--r-- | src/tar_type.h | 6 |
2 files changed, 10 insertions, 9 deletions
diff --git a/src/fileio.cpp b/src/fileio.cpp index 1f96e7318..c1dafab91 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -337,7 +337,7 @@ FILE *FioFOpenFileSp(const char *filename, const char *mode, Searchpath sp, Subd FILE *FioFOpenFileTar(TarFileListEntry *entry, size_t *filesize) { - FILE *f = fopen(entry->tar->filename, "rb"); + FILE *f = fopen(entry->tar_filename, "rb"); assert(f != NULL); fseek(f, entry->position, SEEK_SET); @@ -513,9 +513,8 @@ static bool TarListAddFile(const char *filename) FILE *f = fopen(filename, "rb"); assert(f != NULL); - TarListEntry *tar_entry = MallocT<TarListEntry>(1); - tar_entry->filename = strdup(filename); - _tar_list.insert(TarList::value_type(filename, tar_entry)); + const char *dupped_filename = strdup(filename); + _tar_list[filename].filename = dupped_filename; TarLinkList links; ///< Temporary list to collect links @@ -575,9 +574,9 @@ static bool TarListAddFile(const char *filename) /* Store this entry in the list */ TarFileListEntry entry; - entry.tar = tar_entry; - entry.size = skip; - entry.position = pos; + entry.tar_filename = dupped_filename; + entry.size = skip; + entry.position = pos; /* Convert to lowercase and our PATHSEPCHAR */ SimplifyFileName(name); diff --git a/src/tar_type.h b/src/tar_type.h index b622da644..04f7250e6 100644 --- a/src/tar_type.h +++ b/src/tar_type.h @@ -11,15 +11,17 @@ /** The define of a TarList. */ struct TarListEntry { const char *filename; + + ~TarListEntry() { free((void*)this->filename); } }; struct TarFileListEntry { - TarListEntry *tar; + const char *tar_filename; size_t size; size_t position; }; -typedef std::map<std::string, TarListEntry *> TarList; +typedef std::map<std::string, TarListEntry> TarList; typedef std::map<std::string, TarFileListEntry> TarFileList; extern TarList _tar_list; extern TarFileList _tar_filelist; |