mirror of https://github.com/OpenTTD/OpenTTD
(svn r26090) -Fix: leaking of file descriptor when reading strings for game texts
parent
0ac9ed0b6b
commit
c54a70cce8
|
@ -81,9 +81,10 @@ LanguageStrings::~LanguageStrings()
|
||||||
LanguageStrings *ReadRawLanguageStrings(const char *file)
|
LanguageStrings *ReadRawLanguageStrings(const char *file)
|
||||||
{
|
{
|
||||||
LanguageStrings *ret = NULL;
|
LanguageStrings *ret = NULL;
|
||||||
|
FILE *fh = NULL;
|
||||||
try {
|
try {
|
||||||
size_t to_read;
|
size_t to_read;
|
||||||
FILE *fh = FioFOpenFile(file, "rb", GAME_DIR, &to_read);
|
fh = FioFOpenFile(file, "rb", GAME_DIR, &to_read);
|
||||||
if (fh == NULL) {
|
if (fh == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -96,7 +97,10 @@ LanguageStrings *ReadRawLanguageStrings(const char *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for invalid empty filename */
|
/* Check for invalid empty filename */
|
||||||
if (*langname == '.' || *langname == 0) return NULL;
|
if (*langname == '.' || *langname == 0) {
|
||||||
|
fclose(fh);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
ret = new LanguageStrings(langname, strchr(langname, '.'));
|
ret = new LanguageStrings(langname, strchr(langname, '.'));
|
||||||
|
|
||||||
|
@ -118,8 +122,10 @@ LanguageStrings *ReadRawLanguageStrings(const char *file)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fclose(fh);
|
||||||
return ret;
|
return ret;
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
if (fh != NULL) fclose(fh);
|
||||||
delete ret;
|
delete ret;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue