If the stream is good (i.e. there are still tokens) and we expect an
argument, we call getArg(). However, if there are only spaces, the stream
suddenly isn't good anymore after 'skipSpaces' and we would get an error
when calling 'getChar'. Therefore we have to check whether the stream is
still good.
MathParser: Do not rewind the stream if we can't read from it
If the stream is not good, we don't need to 'putback', because we didn't
read anything yet. If we now do rewind the stream, we are asking for
problems as in bug #8089.
This was introduced in [
3cafb856\lyxgit] to fix bug #4318.
(cherry picked from commit
26dcfcd34374f86562af56dfe5f858d10ea587db)
(cherry picked from commit
1ef930c05826340d7497d6994338f6d63772de5f)
{
if (!good()) {
error("The input stream is not well...");
- putback();
return 0;
}
return tokens_[pos_++].character();
docstring Parser::getArg(char_type left, char_type right)
{
+ docstring result;
skipSpaces();
- docstring result;
+ if (!good())
+ return result;
+
char_type c = getChar();
if (c != left)
- Fixed assertion on selection of insets in RTL text (bug 7518).
+- Fixed an infinite loop when pasting '\\ ' into math (bug 8089).
+
- Don't reset the selected format each time we click into a new paragraph
in View->Source (bug 7997).