Fix memory leak in GUIHyperText (#9489)
authorDS <vorunbekannt75@web.de>
Tue, 10 Mar 2020 19:32:38 +0000 (20:32 +0100)
committerGitHub <noreply@github.com>
Tue, 10 Mar 2020 19:32:38 +0000 (20:32 +0100)
src/gui/guiFormSpecMenu.cpp
src/gui/guiHyperText.cpp
src/gui/guiHyperText.h

index e1bb58f178e77d2bee55c196f54049924ac5ab96..45eb0d17caffc58a22ea2f0f665ebf8dbee9ff8e 100644 (file)
@@ -1654,8 +1654,9 @@ void GUIFormSpecMenu::parseHyperText(parserData *data, const std::string &elemen
        );
 
        spec.ftype = f_Unknown;
-       new GUIHyperText(
-               spec.flabel.c_str(), Environment, this, spec.fid, rect, m_client, m_tsrc);
+       GUIHyperText *e = new GUIHyperText(spec.flabel.c_str(), Environment, this,
+                       spec.fid, rect, m_client, m_tsrc);
+       e->drop();
 
        m_fields.push_back(spec);
 }
index 7b7d3a1b2f306eac36b06db020c35633cabd58c6..68fb8ea3d65812cea47999fdf57a38173331eabb 100644 (file)
@@ -109,7 +109,6 @@ ParsedText::ParsedText(const wchar_t *text)
        m_root_tag.style["color"] = "#EEEEEE";
        m_root_tag.style["hovercolor"] = m_root_tag.style["color"];
 
-       m_tags.push_back(&m_root_tag);
        m_active_tags.push_front(&m_root_tag);
        m_style = m_root_tag.style;
 
@@ -174,7 +173,7 @@ ParsedText::ParsedText(const wchar_t *text)
 
 ParsedText::~ParsedText()
 {
-       for (auto &tag : m_tags)
+       for (auto &tag : m_not_root_tags)
                delete tag;
 }
 
@@ -289,7 +288,7 @@ ParsedText::Tag *ParsedText::newTag(const std::string &name, const AttrsList &at
        Tag *newtag = new Tag();
        newtag->name = name;
        newtag->attrs = attrs;
-       m_tags.push_back(newtag);
+       m_not_root_tags.push_back(newtag);
        return newtag;
 }
 
@@ -1012,6 +1011,7 @@ GUIHyperText::GUIHyperText(const wchar_t *text, IGUIEnvironment *environment,
 GUIHyperText::~GUIHyperText()
 {
        m_vscrollbar->remove();
+       m_vscrollbar->drop();
 }
 
 ParsedText::Element *GUIHyperText::getElementAt(s32 X, s32 Y)
index 3ea8732cd01f4d5bfe1876f109a4ba6f6913c5d6..093c84ccd9473e61d62f289d2c217ef83e6edaee 100644 (file)
@@ -153,7 +153,7 @@ protected:
        std::unordered_map<std::string, StyleList> m_elementtags;
        std::unordered_map<std::string, StyleList> m_paragraphtags;
 
-       std::vector<Tag *> m_tags;
+       std::vector<Tag *> m_not_root_tags;
        std::list<Tag *> m_active_tags;
 
        // Current values