]> git.lyx.org Git - features.git/commitdiff
The logic of the endParagraph() routine is wrong. We should first
authorRichard Heck <rgheck@lyx.org>
Sun, 8 Apr 2012 14:03:23 +0000 (10:03 -0400)
committerRichard Heck <rgheck@lyx.org>
Sun, 8 Apr 2012 14:05:44 +0000 (10:05 -0400)
check if the parsep_tag is pending.

src/output_xhtml.cpp

index fbd9f4bc1cff713379136140bb0392aa4cd393a8..11d2de2734c90c309ebd4e368919999dbe3e070a 100644 (file)
@@ -283,37 +283,27 @@ void XHTMLStream::startParagraph(bool keep_empty)
 
 void XHTMLStream::endParagraph()
 {
-       if (!isTagOpen(parsep_tag)) {
-               // is it pending?
-               TagStack::const_iterator dit = pending_tags_.begin();
-               TagStack::const_iterator const den = pending_tags_.end();
-               bool found = false;
-               for (; dit != den; ++dit) {
-                       if (dit->tag_ == parsep_tag) {
-                               found = true;
-                               break;
-                       }
-               }
-
-               if (!found) {
-                       writeError("No paragraph separation tag found in endParagraph().");
-                       return;
-               }
-               
-               // this case is normal.
+       if (isTagPending(parsep_tag)) {
+               // this case is normal. it just means we didn't have content,
+               // so the parsep_tag never got moved onto the tag stack.
                while (!pending_tags_.empty()) {
                        // clear all pending tags up to and including the parsep tag.
                        // note that we work from the back, because we want to get rid
-                       // of everything that hasnt' been used.
+                       // of everything that hasn't been used.
                        html::StartTag const cur_tag = pending_tags_.back();
                        string const & tag = cur_tag.tag_;
-                       tag_stack_.pop_back();
+                       pending_tags_.pop_back();
                        if (tag == parsep_tag)
                                break;
                }
                return;
        }
 
+       if (!isTagOpen(parsep_tag)) {
+               writeError("No paragraph separation tag found in endParagraph().");
+               return;
+       }
+
        // this case is also normal, if the parsep tag is the last one 
        // on the stack. otherwise, it's an error.
        while (!tag_stack_.empty()) {