mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r13810) -Fix: small memory leak when tar files would be found.
This commit is contained in:
parent
a050a78525
commit
81c50c6c32
|
@ -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,7 +574,7 @@ static bool TarListAddFile(const char *filename)
|
|||
|
||||
/* Store this entry in the list */
|
||||
TarFileListEntry entry;
|
||||
entry.tar = tar_entry;
|
||||
entry.tar_filename = dupped_filename;
|
||||
entry.size = skip;
|
||||
entry.position = pos;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue