mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
The logic of the endParagraph() routine is wrong. We should first
check if the parsep_tag is pending.
This commit is contained in:
parent
8dd436b7dc
commit
7c5f28ad26
@ -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()) {
|
||||
|
Loading…
Reference in New Issue
Block a user