Skip to content
Permalink
Browse files

Fix memory leak in GUIHyperText (#9489)

  • Loading branch information
Desour committed Mar 10, 2020
1 parent 7a7bfdc commit b42493fb4c40611020c9ded9b7af5b96dc4148bd
Showing with 7 additions and 6 deletions.
  1. +3 −2 src/gui/guiFormSpecMenu.cpp
  2. +3 −3 src/gui/guiHyperText.cpp
  3. +1 −1 src/gui/guiHyperText.h
@@ -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);
}
@@ -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)
@@ -153,7 +153,7 @@ class ParsedText
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

0 comments on commit b42493f

Please sign in to comment.
You can’t perform that action at this time.