[Core] Prevent copying of SelfList and SelfList::List

Copying of these types is unsafe and should be detected

Also removed unnecessary constructors for `TileMap` `DebugQuadrant` and
`RenderingQuadrant` which used copying of `SelfList::List`
This commit is contained in:
A Thousand Ships 2023-11-21 17:20:52 +01:00
parent c8c483cf57
commit 904ecb1d36
No known key found for this signature in database
GPG Key ID: 2033189A662F8BD7
2 changed files with 6 additions and 16 deletions

View File

@ -159,6 +159,9 @@ public:
_FORCE_INLINE_ SelfList<T> *first() { return _first; }
_FORCE_INLINE_ const SelfList<T> *first() const { return _first; }
// Forbid copying, which has broken behavior.
void operator=(const List &) = delete;
_FORCE_INLINE_ List() {}
_FORCE_INLINE_ ~List() {
// A self list must be empty on destruction.
@ -185,6 +188,9 @@ public:
_FORCE_INLINE_ const SelfList<T> *prev() const { return _prev; }
_FORCE_INLINE_ T *self() const { return _self; }
// Forbid copying, which has broken behavior.
void operator=(const SelfList<T> &) = delete;
_FORCE_INLINE_ SelfList(T *p_self) {
_self = p_self;
}

View File

@ -173,14 +173,6 @@ public:
SelfList<DebugQuadrant> dirty_quadrant_list_element;
// For those, copy everything but SelfList elements.
DebugQuadrant(const DebugQuadrant &p_other) :
dirty_quadrant_list_element(this) {
quadrant_coords = p_other.quadrant_coords;
cells = p_other.cells;
canvas_item = p_other.canvas_item;
}
DebugQuadrant() :
dirty_quadrant_list_element(this) {
}
@ -213,14 +205,6 @@ public:
SelfList<RenderingQuadrant> dirty_quadrant_list_element;
// For those, copy everything but SelfList elements.
RenderingQuadrant(const RenderingQuadrant &p_other) :
dirty_quadrant_list_element(this) {
quadrant_coords = p_other.quadrant_coords;
cells = p_other.cells;
canvas_items = p_other.canvas_items;
}
RenderingQuadrant() :
dirty_quadrant_list_element(this) {
}