diff options
author | frosch <frosch@openttd.org> | 2013-06-15 15:06:22 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2013-06-15 15:06:22 +0000 |
commit | 18ae9c78bc238ec3f51b778226d4769cee030f39 (patch) | |
tree | c6d36b45018632d11cb83988aa65d1c508fc98fc | |
parent | bb308c5e30d373272811c0031b13eea46d79dba0 (diff) | |
download | openttd-18ae9c78bc238ec3f51b778226d4769cee030f39.tar.xz |
(svn r25402) -Fix-ish: Prevent copying of BasePool and WindowDesc, since they register in static vectors.
-rw-r--r-- | src/core/pool_type.hpp | 7 | ||||
-rw-r--r-- | src/window.cpp | 1 | ||||
-rw-r--r-- | src/window_gui.h | 7 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/core/pool_type.hpp b/src/core/pool_type.hpp index 131b5cef7..f19e44479 100644 --- a/src/core/pool_type.hpp +++ b/src/core/pool_type.hpp @@ -59,6 +59,13 @@ struct PoolBase { * Virtual method that deletes all items in the pool. */ virtual void CleanPool() = 0; + +private: + /** + * Dummy private copy constructor to prevent compilers from + * copying the structure, which fails due to GetPools(). + */ + PoolBase(const PoolBase &other); }; /** diff --git a/src/window.cpp b/src/window.cpp index e4041c319..40b710044 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -106,6 +106,7 @@ WindowDesc::WindowDesc(WindowPosition def_pos, const char *ini_key, int16 def_wi WindowDesc::~WindowDesc() { + _window_descs->Erase(_window_descs->Find(this)); } /** diff --git a/src/window_gui.h b/src/window_gui.h index 6288aadc1..c5c37be85 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -197,6 +197,13 @@ struct WindowDesc : ZeroedMemoryAllocator { static void LoadFromConfig(); static void SaveToConfig(); + +private: + /** + * Dummy private copy constructor to prevent compilers from + * copying the structure, which fails due to _window_descs. + */ + WindowDesc(const WindowDesc &other); }; /** |