Loading src/html.cpp +20 −11 Original line number Diff line number Diff line Loading @@ -299,7 +299,10 @@ void libhtmlpp::HtmlString::_buildtreenode(const libhtmlpp::DocElements *firstel auto checkterminator = [](const DocElements *termel, const DocElements *end){ int i=0; for (const DocElements* curcel=termel->nextel; curcel; curcel=curcel->nextel) { if(termel->element->getType()!=HtmlEl) return (const DocElements*) nullptr; for (const DocElements* curcel=termel; curcel; curcel=curcel->nextel) { if (curcel->element && curcel->element->getType()==HtmlEl && !curcel->terminator && *((HtmlElement*)curcel->element) == ((HtmlElement*)termel->element)) { Loading @@ -308,7 +311,7 @@ void libhtmlpp::HtmlString::_buildtreenode(const libhtmlpp::DocElements *firstel if (curcel->element && curcel->element->getType()==HtmlEl && curcel->terminator && *((HtmlElement*)curcel->element) == ((HtmlElement*)termel->element)) { if(i==0){ if(i==1){ return curcel; }else{ --i; Loading Loading @@ -394,8 +397,7 @@ libhtmlpp::Element *libhtmlpp::HtmlString::_buildTree() { std::vector<char> buf; std::copy(_Data.begin()+close,_Data.begin()+ii,std::back_inserter(buf)); addelement(&firstEl,&lastEl,new TextElement()); std::copy(buf.begin(),buf.end(),std::inserter<std::vector<char>>(((TextElement*)(lastEl->element))->_Text, ((TextElement*)lastEl->element)->_Text.begin())); std::copy(buf.begin(),buf.end(),std::back_inserter(((TextElement*)(lastEl->element))->_Text)); } if(strncmp(_Data.data()+ii,"<!--",4)==0){ Loading @@ -421,15 +423,14 @@ libhtmlpp::Element *libhtmlpp::HtmlString::_buildTree() { if(_Data[ii]==HTMLTAG_CLOSE) { std::vector<char> tel; std::copy(_Data.begin()+start,_Data.begin()+ii, std::inserter<std::vector<char>>(tel,tel.begin())); std::copy(_Data.begin()+start,_Data.begin()+ii,std::back_inserter(tel)); _serialelize(tel,(HtmlElement*)lastEl->element); } } while(ii<_Data.size()){ if( strncmp(_Data.data()+ii,"</script>",9)==0 ) { if( strncmp(_Data.data()+ii,"</script",8)==0 ) { addelement(&firstEl,&lastEl,new ScriptElement()); lastEl->terminator=true; Loading @@ -437,7 +438,16 @@ libhtmlpp::Element *libhtmlpp::HtmlString::_buildTree() { std::copy(_Data.begin()+start,_Data.begin()+ii, std::back_inserter(((ScriptElement*)lastEl->element)->_Script)); close=ii+9; while(ii<_Data.size()){ if(_Data[ii]==HTMLTAG_CLOSE) { std::vector<char> tel; std::copy(_Data.begin()+start,_Data.begin()+ii,std::back_inserter(tel)); _serialelize(tel,(HtmlElement*)lastEl->element); } } close=ii; break; } ++ii; Loading @@ -451,10 +461,9 @@ libhtmlpp::Element *libhtmlpp::HtmlString::_buildTree() { } if(_Data[ii]==HTMLTAG_CLOSE) { std::vector<char> tel; std::copy(_Data.begin()+start,_Data.begin()+ii, std::inserter<std::vector<char>>(tel,tel.begin())); std::copy(_Data.begin()+start,_Data.begin()+ii,std::back_inserter(tel)); _serialelize(tel,(HtmlElement*)lastEl->element); close=ii+1; close=ii; break; } ++ii; Loading Loading
src/html.cpp +20 −11 Original line number Diff line number Diff line Loading @@ -299,7 +299,10 @@ void libhtmlpp::HtmlString::_buildtreenode(const libhtmlpp::DocElements *firstel auto checkterminator = [](const DocElements *termel, const DocElements *end){ int i=0; for (const DocElements* curcel=termel->nextel; curcel; curcel=curcel->nextel) { if(termel->element->getType()!=HtmlEl) return (const DocElements*) nullptr; for (const DocElements* curcel=termel; curcel; curcel=curcel->nextel) { if (curcel->element && curcel->element->getType()==HtmlEl && !curcel->terminator && *((HtmlElement*)curcel->element) == ((HtmlElement*)termel->element)) { Loading @@ -308,7 +311,7 @@ void libhtmlpp::HtmlString::_buildtreenode(const libhtmlpp::DocElements *firstel if (curcel->element && curcel->element->getType()==HtmlEl && curcel->terminator && *((HtmlElement*)curcel->element) == ((HtmlElement*)termel->element)) { if(i==0){ if(i==1){ return curcel; }else{ --i; Loading Loading @@ -394,8 +397,7 @@ libhtmlpp::Element *libhtmlpp::HtmlString::_buildTree() { std::vector<char> buf; std::copy(_Data.begin()+close,_Data.begin()+ii,std::back_inserter(buf)); addelement(&firstEl,&lastEl,new TextElement()); std::copy(buf.begin(),buf.end(),std::inserter<std::vector<char>>(((TextElement*)(lastEl->element))->_Text, ((TextElement*)lastEl->element)->_Text.begin())); std::copy(buf.begin(),buf.end(),std::back_inserter(((TextElement*)(lastEl->element))->_Text)); } if(strncmp(_Data.data()+ii,"<!--",4)==0){ Loading @@ -421,15 +423,14 @@ libhtmlpp::Element *libhtmlpp::HtmlString::_buildTree() { if(_Data[ii]==HTMLTAG_CLOSE) { std::vector<char> tel; std::copy(_Data.begin()+start,_Data.begin()+ii, std::inserter<std::vector<char>>(tel,tel.begin())); std::copy(_Data.begin()+start,_Data.begin()+ii,std::back_inserter(tel)); _serialelize(tel,(HtmlElement*)lastEl->element); } } while(ii<_Data.size()){ if( strncmp(_Data.data()+ii,"</script>",9)==0 ) { if( strncmp(_Data.data()+ii,"</script",8)==0 ) { addelement(&firstEl,&lastEl,new ScriptElement()); lastEl->terminator=true; Loading @@ -437,7 +438,16 @@ libhtmlpp::Element *libhtmlpp::HtmlString::_buildTree() { std::copy(_Data.begin()+start,_Data.begin()+ii, std::back_inserter(((ScriptElement*)lastEl->element)->_Script)); close=ii+9; while(ii<_Data.size()){ if(_Data[ii]==HTMLTAG_CLOSE) { std::vector<char> tel; std::copy(_Data.begin()+start,_Data.begin()+ii,std::back_inserter(tel)); _serialelize(tel,(HtmlElement*)lastEl->element); } } close=ii; break; } ++ii; Loading @@ -451,10 +461,9 @@ libhtmlpp::Element *libhtmlpp::HtmlString::_buildTree() { } if(_Data[ii]==HTMLTAG_CLOSE) { std::vector<char> tel; std::copy(_Data.begin()+start,_Data.begin()+ii, std::inserter<std::vector<char>>(tel,tel.begin())); std::copy(_Data.begin()+start,_Data.begin()+ii,std::back_inserter(tel)); _serialelize(tel,(HtmlElement*)lastEl->element); close=ii+1; close=ii; break; } ++ii; Loading