Commit 3fc0811d authored by jan.koester's avatar jan.koester
Browse files

some repairs

parent fda9b023
Loading
Loading
Loading
Loading
+20 −11
Original line number Diff line number Diff line
@@ -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)) {
@@ -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;
@@ -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){
@@ -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;
@@ -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;
@@ -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;