From b88c66e1cb974ad00be9666282dfc9c8f3a89f95 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 24 Aug 2020 11:07:39 +0800 Subject: [PATCH] fixed a bug in xml::ElementParseCreater::Start/End --- src/xml/ElementParseCreater.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/xml/ElementParseCreater.cpp b/src/xml/ElementParseCreater.cpp index f44711c..2ac052c 100644 --- a/src/xml/ElementParseCreater.cpp +++ b/src/xml/ElementParseCreater.cpp @@ -14,7 +14,17 @@ namespace hgl ElementCreater *ec=cur_ec->GetSubElementCreater(element_name); ecs_stack.Push(cur_ec); - cur_ec=ec; + + cur_ec=nullptr; + + if(ec) + { + if(ec->Start()) + cur_ec=ec; + else + delete ec; + } + return(cur_ec); } @@ -34,8 +44,12 @@ namespace hgl void ElementParseCreater::End(const char *element_name) { - cur_ec->End(); - cur_ec=nullptr; + if(cur_ec) + { + cur_ec->End(); + cur_ec=nullptr; + } + ecs_stack.Pop(cur_ec); } }//namespace xml