Commit 4e32fe21 authored by louiz’'s avatar louiz’

Refactor XmppParser::end_element to make it clearer

Both for me, and apparently for clang static analyzer, who reported a (imo)
false positive.
parent 450de4c3
......@@ -104,20 +104,24 @@ void XmppParser::start_element(const XML_Char* name, const XML_Char** attribute)
void XmppParser::end_element(const XML_Char*)
{
this->level--;
if (this->level == 1)
{
this->stanza_event(*this->current_node);
}
if (this->level == 0)
{
{ // End of the whole stream
this->stream_close_event(*this->current_node);
this->current_node = nullptr;
this->root.reset();
}
else
this->current_node = this->current_node->get_parent();
if (this->level == 1)
this->current_node->delete_all_children();
{
auto parent = this->current_node->get_parent();
if (this->level == 1)
{ // End of a stanza
this->stanza_event(*this->current_node);
// Note: deleting all the children of our parent deletes ourself,
// so current_node is an invalid pointer after this line
this->current_node->get_parent()->delete_all_children();
}
this->current_node = parent;
}
}
void XmppParser::char_data(const XML_Char* data, int len)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment