Merge branch 'master' into jgrpp
# Conflicts: # .github/workflows/release.yml # bin/CMakeLists.txt # src/dock_gui.cpp # src/lang/brazilian_portuguese.txt # src/lang/catalan.txt # src/lang/czech.txt # src/lang/dutch.txt # src/lang/english.txt # src/lang/english_US.txt # src/lang/estonian.txt # src/lang/finnish.txt # src/lang/french.txt # src/lang/german.txt # src/lang/hungarian.txt # src/lang/indonesian.txt # src/lang/italian.txt # src/lang/japanese.txt # src/lang/korean.txt # src/lang/lithuanian.txt # src/lang/luxembourgish.txt # src/lang/norwegian_bokmal.txt # src/lang/polish.txt # src/lang/portuguese.txt # src/lang/romanian.txt # src/lang/russian.txt # src/lang/serbian.txt # src/lang/simplified_chinese.txt # src/lang/slovak.txt # src/lang/spanish.txt # src/lang/spanish_MX.txt # src/lang/swedish.txt # src/lang/tamil.txt # src/lang/ukrainian.txt # src/lang/vietnamese.txt # src/newgrf.cpp # src/newgrf_gui.cpp # src/object_gui.cpp # src/pathfinder/yapf/yapf_costrail.hpp # src/pathfinder/yapf/yapf_node_rail.hpp # src/rail_cmd.cpp # src/roadveh_cmd.cpp # src/town_cmd.cpp # src/vehicle.cpp # src/water_cmd.cpp
This commit is contained in:
@@ -189,8 +189,16 @@ struct LanguagePack : public LanguagePackHeader {
|
||||
inline void operator delete(void *ptr) { ::operator delete (ptr); }
|
||||
};
|
||||
|
||||
struct LanguagePackDeleter {
|
||||
void operator()(LanguagePack *langpack)
|
||||
{
|
||||
/* LanguagePack is in fact reinterpreted char[], we need to reinterpret it back to free it properly. */
|
||||
delete[] reinterpret_cast<char*>(langpack);
|
||||
}
|
||||
};
|
||||
|
||||
struct LoadedLanguagePack {
|
||||
std::unique_ptr<LanguagePack> langpack;
|
||||
std::unique_ptr<LanguagePack, LanguagePackDeleter> langpack;
|
||||
|
||||
std::vector<char *> offsets;
|
||||
|
||||
@@ -2055,7 +2063,7 @@ bool ReadLanguagePack(const LanguageMetadata *lang)
|
||||
{
|
||||
/* Current language pack */
|
||||
size_t len = 0;
|
||||
std::unique_ptr<LanguagePack> lang_pack(reinterpret_cast<LanguagePack *>(ReadFileToMem(lang->file, len, 1U << 20).release()));
|
||||
std::unique_ptr<LanguagePack, LanguagePackDeleter> lang_pack(reinterpret_cast<LanguagePack *>(ReadFileToMem(lang->file, len, 1U << 20).release()));
|
||||
if (!lang_pack) return false;
|
||||
|
||||
/* End of read data (+ terminating zero added in ReadFileToMem()) */
|
||||
|
Reference in New Issue
Block a user